• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - problem ze zwracaniem ilości i wyświetleniem komunikatu z błędnie wybranym rekordem.

Object Storage Arubacloud
0 głosów
207 wizyt
pytanie zadane 11 sierpnia 2015 w C# przez michal_kolsut Nowicjusz (190 p.)

Witam serdecznie wszytkich Użytkowników, którzy trafili do tego postu.

Mój pierwszy problem polega na tym, że gdy wybiorę Row z DataGridView, następnie opcje USUŃ to rekord kasuje się zgodnie z zasadą programu. Problem polega, gdy Użytkownik nie zaznaczy żadnego pola i kliknie USUŃ, wtedy aplikacja wyrzuca błąd i przerywa działanie programu.

Kod wygląda tak:

int poz = dataGridView1.SelectedRows[0].Index;
            int id = Convert.ToInt32(dataGridView1.Rows[poz].Cells["id"].Value);

            DialogResult dialog = MessageBox.Show("Chcesz usunąć obecny rekord? " , "Delete", MessageBoxButtons.YesNo);
            if (dialog == DialogResult.Yes)
            {
                string cnStr = @"Server=.\SQLEXPRESS;Database=MojaBaza;Trusted_Connection=True;";
                SqlConnection con = new SqlConnection(cnStr);
                con.Open();
                SqlCommand cmd = new SqlCommand("DELETE FROM APLIKACJA where id = @id", con);
                cmd.Parameters.Add("@id", id);
                cmd.ExecuteNonQuery();
                con.Close();

                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM aplikacja", con);
                DataTable ds = new DataTable();

                da.Fill(ds);

                dataGridView1.DataSource = ds;
                dataGridView1.Update();

                con.Close(); ;

                MessageBox.Show("Rekord został usunięty");

            }
            
            else if(dialog == DialogResult.No)
            {
                string cnStr = @"Server=.\SQLEXPRESS;Database=MojaBaza;Trusted_Connection=True;";
                SqlConnection con = new SqlConnection(cnStr);
                con.Open();

                SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM aplikacja", con);
                DataTable ds = new DataTable();

                da.Fill(ds);

                dataGridView1.DataSource = ds;
                dataGridView1.Update();

                con.Close();
            }

            else if(poz <= -1)
            {

                MessageBox.Show("Błąd! Proszę podać zawartość do usunięcia.");
            }

       }

 

Drugi problem jest pewnie łatwiejszy do rozwiązania, lecz nie potrafię niegdzie znaleźć odpowiedzi. Chcę aby wartości z DataGridView do ComboBox i do RichTextBox i tak się dzieje, niestety problem jest z NumericUpDown, jakieś propozycje?

 

Oto kod:

if(e.RowIndex >= 0)
            {

                DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
                
                //int id = Convert.ToInt32(dataGridView1.Rows[0].Cells["id"].Value);

                comboBox1.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
                comboBox2.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
                comboBox3.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();
                richTextBox1.Text = this.dataGridView1.CurrentRow.Cells[4].Value.ToString();
                numericUpDown1.Value = this.dataGridView1.CurrentRow.Cells[5].Value.ToString();

1 odpowiedź

+1 głos
odpowiedź 11 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
wybrane 12 sierpnia 2015 przez michal_kolsut
 
Najlepsza
W pierwszym przypadku zastosuj "try/catch"

W catch możesz przeanalizować problem i wyświetlić odpowiedni komunikat.

W drugim nie ogarniam do końca o co ci chodzi.

O jak i polecam kod wklejać do http://wklej.org a następnie podawać linka.
komentarz 11 sierpnia 2015 przez michal_kolsut Nowicjusz (190 p.)
Chcę aby zaznaczony Row w DataGridView zwrócił wszystkiem swoje wartości do Combobox1, 2, 3 i RichTextBox to się stało.

NumericUpDown tego nie zrobił, w tym sęk.

 

Ok, dzięki, dostusuję się :)
komentarz 11 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)

If mnie szokuję gdyż zawsze zwróci true.

jeśli w liście jest Więcej lub równej 0 to ma się wykonać te polecenia.

Problem w tym że lista nie może posiadać ujemną ilość.

" numericUpDown1.Value"

Value nie jest tekstem a cyfrą więc nie do końca nie jest dobrym pomysłem używania tego -  "tostring()"

Możesz dać cały projekt, potestuję i dam znać jak to rozwiązać.

komentarz 12 sierpnia 2015 przez michal_kolsut Nowicjusz (190 p.)
ok, opcja try-catch dała pożądany efekt, dzięki wielkie :)

masz może jakieś pomysły żeby DataGrifView zwrócił wartość do Numieric'a?

Podobne pytania

0 głosów
1 odpowiedź 140 wizyt
pytanie zadane 23 maja 2017 w C# przez sharkus101 Początkujący (330 p.)
0 głosów
1 odpowiedź 156 wizyt
0 głosów
1 odpowiedź 439 wizyt
pytanie zadane 10 maja 2018 w C# przez marines231 Nowicjusz (160 p.)

92,555 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...