none
gridview ile RRS feed

  • Soru

  • if (e.Column.Name != "TOPLAM")
                {
    
                        decimal BirimFiyat = 0, Miktar = 0, Isk1 = 0, Isk2 = 0;
                        BirimFiyat = Convert.ToDecimal(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BIRIMFIYAT"));
                        Miktar = Convert.ToDecimal(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MIKTAR"));
                        Isk1 = Convert.ToDecimal(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "ISK1"));
                        Isk2 = Convert.ToDecimal(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "ISK2"));
    
                        decimal AraToplam;
                        AraToplam = BirimFiyat * Miktar;
                        AraToplam = AraToplam - (AraToplam / 100 * Isk1);
                        AraToplam = AraToplam - (AraToplam / 100 * Isk2);
                        gridView1.SetRowCellValue(gridView1.FocusedRowHandle, "TOPLAM", AraToplam);
                    }



    yukarıdaki kodda string incorrect format diye hata alıyorum. sebebi ne  olabilir gridview kolon adları doğru try içinde mesaj vermeden çalıştırınca çalışıyor ama try kaldırınca hata veriyor


    27 Haziran 2020 Cumartesi 15:13

Yanıtlar

  • Sn. Ayshen Ortaci

    Hatayı hangi satırda alıyorsan o satırdaki decimal e çevirmek istediğin değer geçerli bir değer değil. Rakam yerine harf olabilir, null değer olabilir gibi.

    Convert.ToDecimal yerine decimal.TryParse kullanabilirsin. Eğer hatalı bir değer gelirse o tipin varsayılan değeri atanır (decimal için 0)

    decimal BirimFiyat; decimal.TryParse((string)gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BIRIMFIYAT"), out BirimFiyat);

    gibi hatta hata kontrolü bile yapabilirsin

    decimal BirimFiyat, Miktar, Isk1, Isk2; 
    int sonuc = 0; 
    sonuc += decimal.TryParse((string)gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BIRIMFIYAT"), out BirimFiyat) ? 0 : 1;
    sonuc += decimal.TryParse((string)gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MIKTAR"), out BirimFiyat) ? 0 : 1;
    sonuc += decimal.TryParse((string)gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "ISK1"), out BirimFiyat) ? 0 : 1;
    sonuc += decimal.TryParse((string)gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "ISK2"), out BirimFiyat) ? 0 : 1;
    if(sonuc > 0)
    {
      MessageBox.Show("Geçersiz format");
      return;
    }
    ....
    ...
    şeklinde yaparsanız girişler hatalı olursa kodların geri kalanı çalışmaz.

    Birinin cevabı size yardımcı oldu ise, lütfen "Yanıt Olarak Öner" veya "Yanıt Olarak İşaretle" olarak işaretlemeyi ve "Oy" vermeyi unutmayınız. Burada sağlanan tüm görüşler, kişiseldir ve Microsoft'un konumunu temsil etmemektedir. Tüm bilgiler hazır olarak temin edilmektedir ve herhangi bir garanti vermemektedir.

    • Yanıt Olarak İşaretleyen Ayshen Ortaci 27 Haziran 2020 Cumartesi 16:38
    27 Haziran 2020 Cumartesi 15:15
    Moderatör