C# datagridview中添加的未注释行处出现异常
我有一个datagridview,其中一些列是可编辑的。Datagrid会自动在底部添加新行。我想在单击按钮时在数据库中插入网格的内容,但当我为每个循环写入insert查询时,它会抛出一个异常,因为底部有一个未限制的行 异常:对象引用未设置为对象的实例 请帮我修一下这个。。 代码在这里C# datagridview中添加的未注释行处出现异常,c#,.net,winforms,exception-handling,datagridview,C#,.net,Winforms,Exception Handling,Datagridview,我有一个datagridview,其中一些列是可编辑的。Datagrid会自动在底部添加新行。我想在单击按钮时在数据库中插入网格的内容,但当我为每个循环写入insert查询时,它会抛出一个异常,因为底部有一个未限制的行 异常:对象引用未设置为对象的实例 请帮我修一下这个。。 代码在这里 private void btn_save_Click(object sender, EventArgs e) { try { con.Open(); cmd =
private void btn_save_Click(object sender, EventArgs e)
{
try
{
con.Open();
cmd = new SqlCommand("Select SupplierId from tbl_Supplier where SupplierName ='" + cmbSupplierName.Text + "'", con);
sdr = cmd.ExecuteReader();
if (sdr.HasRows)
{
while (sdr.Read())
{
string sup_id = sdr["SupplierId"].ToString();
//txt_id.Text = sup_id;
}
}
foreach (DataGridViewRow row in grdPurchase.Rows)
{
string material_id = row.Cells[2].Value.ToString();
int m_id = int.Parse(material_id);
string Quantity = row.Cells[3].Value.ToString();
float m_quantity = float.Parse(Quantity);
string rate = row.Cells[4].Value.ToString();
float m_rate = float.Parse(rate);
string total = row.Cells[5].Value.ToString();
float m_total = float.Parse(total);
//string bill = txt_billno.Text;
int supplier_id = int.Parse(sup_id);
//string date = dtp_Purchase.Text;
// dt.Rows.Add(supplier_id, bill, m_id, m_quantity, m_rate, m_total, date);
String query = "insert into tbl_Purchase (SupplierId,MaterialId,BillNo,Quantity,Rate,Total,Date) values(" + supplier_id + "," + m_id + ",'" + txt_billno.Text + "'," + m_quantity + "," + m_rate + "," + m_total + ",'" + dtp_Purchase.Text + "')";
cmd = new SqlCommand(query, con);
cmd.ExecuteNonQuery();
//object id = cmd.ExecuteScalar();
// string purchase_id = id.ToString();
MessageBox.Show("Inserted: ");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
sdr.Close();
con.Close();
}
}
可以使用以下属性筛选出新行:
foreach (DataGridViewRow row in grdPurchase.Rows)
{
if (row.IsNewRow)
{
continue;
}
...
GridView自动添加一行是不正常的。您确定此行在您的数据源中不可用吗?GridView只是数据源的一个视图,所以问题就在这里。您正在使用哪个数据源?此外,如果创建一个类,它会更漂亮。每行由一个对象表示,数据源是一个列表。如果要从GridView获取所有数据,可以使用列表或从类中强制转换类型中的每个数据行
如果没有一些代码来显示您正在做什么,以及您是如何做的,您会问我们一个不可能的问题。向我们显示代码的相关部分…这将如何工作?IsNewRow属性做什么?因为我试过用IsNewRow,但是Inain….:从链接文档:因为新记录的行在Rows集合中,所以使用IsNewRow属性确定行是新记录的行还是填充的行。当开始向行中输入数据时,行不再是新行。