DataGridView C#搜索给出空值
我想创建一个简单的程序,通过特定单元格上dataGridView的每一行进行查看。 我让它工作,但如果没有找到我搜索的字符串,它将返回null。搞砸了。代码如下:DataGridView C#搜索给出空值,c#,datagridview,null,C#,Datagridview,Null,我想创建一个简单的程序,通过特定单元格上dataGridView的每一行进行查看。 我让它工作,但如果没有找到我搜索的字符串,它将返回null。搞砸了。代码如下: string targetSearch = textBox2.Text; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; foreach(DataGridViewRow row in dataGridView1.Rows) { if
string targetSearch = textBox2.Text;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
foreach(DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value.ToString().Equals(targetSearch))
{
row.Selected = true;
break;
}
}
您正在将空值转换为字符串,这将给出
System.NullReferenceException
string targetSearch = textBox2.Text;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
foreach(DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value == null) continue; //add this
if (row.Cells[0].Value.ToString().Equals(targetSearch))
{
row.Selected = true;
break;
}
}
有两件事你可以尝试:
示例用户界面
验证该值是否为空。
private void btnSearch_Click(object sender, EventArgs e)
{
string targetSearch = txtSearch.Text.Trim();
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
foreach(DataGridViewRow row in dataGridView1.Rows) {
if (row.cells[0].value == null)
continue;
if(row.cells[0].value.Tostring().Trim().Equals(targetSearch)) {
row.Selected = true;
break;
}
}
}
处理NullReference异常
private void btnSearch_Click(object sender, EventArgs e)
{
string targetSearch = txtSearch.Text.Trim();
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value.ToString().Equals(targetSearch))
{
row.Selected = true;
break;
}
}
}
catch (NullReferenceException ex) { }
}
如果DGV设置为
AllowUserToAddress
您正在循环通过一个过多的行。如果不是null
,它应该有什么值?请解释问题中“it”的每个用法指的是什么。将AllowUserToAddRows设置为False。顺便说一句,如果我的问题不够清楚,对不起!但是有人已经修好了,这对mutch不重要,谢谢!