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

VPS Starter Arubacloud
0 głosów
204 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ź 137 wizyt
pytanie zadane 23 maja 2017 w C# przez sharkus101 Początkujący (330 p.)
0 głosów
1 odpowiedź 152 wizyt
0 głosów
1 odpowiedź 434 wizyt
pytanie zadane 10 maja 2018 w C# przez marines231 Nowicjusz (160 p.)

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...