• 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.

0 głosów
167 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,330 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,330 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ź 95 wizyt
pytanie zadane 23 maja 2017 w C# przez sharkus101 Początkujący (330 p.)
0 głosów
1 odpowiedź 125 wizyt
0 głosów
1 odpowiedź 307 wizyt
pytanie zadane 10 maja 2018 w C# przez marines231 Nowicjusz (160 p.)

87,976 zapytań

136,557 odpowiedzi

304,510 komentarzy

58,337 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...