使用ado.net在c#中的datagridview中插入数据库检查行
本文关键字:插入 数据库 检查 datagridview 中的 ado net 使用 | 更新日期: 2023-09-27 18:25:04
代码:
int i = 0;
List<int> ChkedRow = new List<int>();
for (i = 0; i <= dataGridView1.RowCount; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "yes")
{
ChkedRow.Add(i);
}
}
if (ChkedRow.Count == 0)
{
MessageBox.Show("Select one checkbox");
return;
}
foreach (int j in ChkedRow)
{
try
{
Query = "Insert into dbo.tbl_Class(Class_Name,Category,Description,Item) values ('" + txtname.Text + "','" + cbo_cat.Text + "','" + txtdesc.Text + "','" + dataGridView1.Rows[j].Cells[1].Value.ToString() + "')";
SqlCommand cmd = new SqlCommand(Query, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
MessageBox.Show("Records successfully inserted");
我想将我在数据网格视图中选择的行保存在sql中,但我在这行中遇到了错误"if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "yes")"
。我不知道为什么。你能帮我做这个吗?或者建议另一个代码或另一种方法?请帮忙。
您是否尝试过使用columnname而不是int索引?
if (dataGridView1.Rows[i].Cells["ColumnName"].Value.ToString() == "yes")
{
ChkedRow.Add(i);
}
我不太确定你会遇到什么错误,但你肯定会遇到IndexOutOfRange异常或类似的情况,因为你在这里迭代行的方式。。。
for (i = 0; i <= dataGridView1.RowCount; i++)
RowCount
返回总行数,但是,您正在访问一个从零开始的索引,一旦到达最后一次迭代,就会抛出上述异常。因此,您必须更改for循环中的求值表达式,以排除最后一次迭代,如下所示。。。
for (i = 0; i < dataGridView1.Rows.Count; i++)
更新
根据您的评论,由于您得到的是NullReferenceException
,您应该确保单元格的值已设置为null以外的值,如下所示。。。
var row = dataGridView1.Rows[i];
if (!string.IsNullOrEmpty(row.Cells[0].Value) && row.Cells[0].Value.ToString() == "yes")
{
ChkedRow.Add(i);
}
也可以尝试使用dataGridView1.Rows.Count
而不是RowCount
属性
试试这个,
foreach (GridViewRow grdRow in dataGridView1.Rows)
{
CheckBox chk = new CheckBox();
int count=0;
chk = (CheckBox)grdRow.FindControl("check box name");
if (chk != null && chk.Checked == true)
{
//write code for insesrt
count++;
}
}
if(count==0)
{
MessageBox.Show("Select one checkbox");
}