none
Dizin aralık dışındaydı RRS feed

  • Soru

  • System.ArgumentOutOfRangeException: 'Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır.
    Parametre adı: index'

    hatası alıyorum

                         

              private int adetHesapla(int row) 
            {   
    if (Convert.ToInt32(dataGridView1.Rows[row].Cells[4].Value) > 0)  Satırda hata gösteriyor.
                    return Convert.ToInt32(dataGridView1.Rows[row].Cells[4].Value) + 1;
                else
                    return 1;

            }

    id 1 olanı datagrid e çekince sıkıntı olmuyor id si 2 veya daha üst olan verilerde üüstteki kod satırında hata veriyor. Yani veritabanındaki tablo daki en üst veriyi çekince sıkıntı çıkmıyor.Diğerlerini ilk de çekmeye çalıştığımda alıyorum bu hatayı çözümü bilen varsa aydınlatırsa sevinirim.

    17 Şubat 2020 Pazartesi 13:11

Yanıtlar

Tüm Yanıtlar

  • Cozumunu mesajda yazıyor zaten. Bir dizine vereceğiniz deger 0 ile o dizinin uzunluğu-1 araliginda olmalı. Yani tek elemanli bir diziniz var ise, dizi[0] kullanabileceginiz tek deger, 5 elemanli bir dizide 0,1,2,3,4 kullanabilirsiniz.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    17 Şubat 2020 Pazartesi 14:47
    Yanıtlayıcı
  • kodu söyle açmak istiyrum 

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                for (int i = 0; i < dataTable.Rows.Count-1; i++)
                {
                    if (textBox1.Text == dataTable.Rows[i][1].ToString()) 
                    {
                        if (adetHesapla(i) != 1)
                        {
                            dataGridView1.Rows[i].Cells[4].Value = adetHesapla(i);
                            
                        }
                        else
                        {
                            dataGridView1.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3], adetHesapla(i));
                        }
                        fiyatHesapla();

                        textBox1.Clear();

                    }
                }
            }

    ben istiyrum ki veritabanındaki tablo da 50. veriyinin değeri textbox'daki no su ile aynı olduğunda onu çeksin datagridview'e ama sadece ilk baştaki veriyi çekiyor diğerlerinde hata veriyor.

    17 Şubat 2020 Pazartesi 21:29
  • Valla o sizin kodunuz, tamamı ve dataGridView'in kaynağı sizde. Hata verdiği satırda:

    dataGridView1.Rows[i].Cells[4]....

    yazıyor. Biz bilemeyiz ki dataGridView'de i-1 kadar satir ya da 5 sütun var mıdır yok mudur. Donguyu DataTable ile başlatıp, içerisinde DataGridView kullanmissiniz. Debuggerda degerleri kontrol ediniz. 



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    17 Şubat 2020 Pazartesi 21:47
    Yanıtlayıcı