使用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")"。我不知道为什么。你能帮我做这个吗?或者建议另一个代码或另一种方法?请帮忙。

使用ado.net在c#中的datagridview中插入数据库检查行

您是否尝试过使用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");
}