我如何获得DataGridView行值并将它们存储在变量中
本文关键字:存储 变量 何获得 DataGridView | 更新日期: 2023-09-27 18:04:38
我如何一次循环一个DataGridView
的行(我有2列),然后将这2列存储在将用作sql查询参数的变量中?
foreach (DataGridViewRow Datarow in contentTable_grd.Rows)
{
contentValue1 = Datarow.Cells[0].Value.ToString();
contentValue2 = Datarow.Cells[1].Value.ToString();
SqlParameter param4 = new SqlParameter("@contentTableValue1", contentValue1);
SqlParameter param5 = new SqlParameter("@contentTableValue2", contentValue2);
}
当使用上面的代码时,我得到这个错误:
对象引用未设置为对象的实例。
最可能的问题是你引用的一个或两个单元格包含一个空值,当你试图在这样的单元格上调用ToString()
时抛出异常。
一个解决方案是使用??操作符,如果单元格值为空,则返回参数的默认值:
contentValue1 = Datarow.Cells[0].Value ?? string.Empty;
contentValue2 = Datarow.Cells[1].Value ?? string.Empty;
如果单元格的Value为null,这段代码将返回一个空字符串;您可能希望使用不同的默认值
发现问题,我需要一个if语句来防止空单元格通过
foreach (DataGridViewRow Datarow in contentTable_grd.Rows)
{
if (Datarow.Cells[0].Value != null && Datarow.Cells[1].Value != null)
{
contentValue1 = Datarow.Cells[0].Value.ToString();
contentValue2 = Datarow.Cells[1].Value.ToString();
MessageBox.Show(contentValue1);
MessageBox.Show(contentValue2);
}
}
什么是contentValue1?
不确定c#——它可以隐式地键入变量吗?也许可以试试string contentvalue1 = ...
此外,根据单元格中可能存在的控件类型…你可以这样写
string contentvalue1 = CTYPE(DataRow.FindControl("myTextbox"),textbox).text