【问题标题】:Inserting Datagridview rows into database using Entity Framework使用实体框架将 Datagridview 行插入数据库
【发布时间】:2019-10-29 13:59:51
【问题描述】:

如果我想在datagridview中添加记录,没关系,但是我想在datagridview中添加记录到数据库中的哪些行。

有一种方法-我如何添加Datagridview rows

public void SepeteEkle()
{
    decimal? tutar;
    decimal? toplamtutar = 0;
    int miktarsum = 0;

    DataRow urun = dt.NewRow();

    tutar = Convert.ToDecimal(lblFiyat.Text) * Convert.ToInt32(txtMiktar.Text);
    bool itemfound = false;

    for (int i = 0; i < dgvSepet.Rows.Count; i++)
    {
        if (Convert.ToString(dgvSepet.Rows[i].Cells[0].Value) == lblStokID.Text)
        {
            miktarsum += Convert.ToInt32(dgvSepet.Rows[i].Cells[4].Value) + Convert.ToInt32(txtMiktar.Text);
            toplamtutar += Convert.ToDecimal(dgvSepet.Rows[i].Cells[5].Value) + tutar;

            dgvSepet.Rows[i].Cells[4].Value = miktarsum;
            dgvSepet.Rows[i].Cells[5].Value = toplamtutar; 

            itemfound = true;
        }
    }

    if (itemfound == false)
    {
        urun["Id"] = lblStokID.Text;
        urun["StokKodu"] = txtStokKodu.Text;
        urun["Ürün"] = txtStokAdi.Text;
        urun["Fiyat"] = lblFiyat.Text;
        urun["Miktar"] = txtMiktar.Text;
        urun["Toplam"] = tutar;

        dt.Rows.Add(urun);
        dgvSepet.DataSource = dt;
    }
}

我想添加所有使用实体框架创建的的数据库。

我尝试了什么:

public void DatabaseSepetAktar()
{
    xstHar stokHareketModel = new xstHar();
    stokHareketModel.stharCariKod = txtCariKodu.Text;
    stokHareketModel.stharTarih = DateTime.Now;
    stokHareketModel.stharDovFiyat = Convert.ToDecimal(lblTotal.Text);

    for (int i = 0; i < dgvSepet.Rows.Count -1 ; i++)
    {
        stokHareketModel.masterId = Convert.ToInt32(dgvSepet.Rows[i].Cells[0].Value);
        stokHareketModel.stokKodu = dgvSepet.Rows[i].Cells[1].Value.ToString();
        stokHareketModel.stharGcMik1 = Convert.ToDecimal(dgvSepet.Rows[i].Cells[4].Value);

        using (fastCellDb db = new fastCellDb())
        {
            db.xstHars.Add(stokHareketModel);
            db.SaveChanges();
        }
    }
}

但我得到一个错误

验证异常

来自实体框架。

我该如何解决这个问题?

【问题讨论】:

  • 您需要查看异常对象的ValidationErrors,并深入了解其中的信息。它非常详细地告诉您出了什么问题。 Check out this excellent article 关于如何轻松提取该信息
  • 谢谢!!我查看我的异常信息,看看哪些数据不能发送空值。谢谢!!

标签: c# winforms entity-framework datagridview ado.net


【解决方案1】:

当您尝试转换类型错误的值时会引发验证异常,这是由于错误的索引。当您使用文本索引向 DataGridView dt.Rows.Add(urun) 添加一行时,将索引方式从数字更改为文本:Cells[0] → Cells["Id"] 等。

然后看线:for (int i = 0; i &lt; dgvSepet.Rows.Count -1 ; i++),那里的 -1 似乎是多余的。

【讨论】:

  • 这不能解决我的问题
猜你喜欢
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多