This is the table. On the right are the names我有一个gridview,它显示数据库中的一个表。我想使用文本框和按钮在gridview中搜索名称。这是我到目前为止所拥有的。当我要搜索时,出现一个消息框:对象引用未设置对象引用。
private void btn_zoek_Click(object sender, EventArgs e)
{
string searchValue = tb_SearchOverzicht.Text;
metroGrid1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
foreach (DataGridViewRow row in metroGrid1.Rows)
{
if (row.Cells[2].Value.ToString().Equals(searchValue))
{
row.Selected = true;
break;
}
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
答案 0 :(得分:1)
检查您要使用的值和对象是否填充了数据而不是null
。
在您的行中
if (row.Cells[2].Value.ToString().Equals(searchValue))
您应该首先检查该单元格是否存在并具有值,例如:
if(row.Cells[2] != null && row.Cells[2].Value.ToString() == searchValue)
{
// Some code
}
请确保您的searchValue
不为空,没有任何字符或者甚至没有正确的格式:
if(!String.IsNullOrWhiteSpace(searchValue))
但是我不认为这是必要的,只是很高兴。 这里的目标是:并非必须填写所有值。似乎该单元格在该列中没有值,该行可能是过滤器行,甚至是空的,甚至更糟:网格甚至没有初始化。因此,请在使用值或对象之前尝试检查它们是否已填充。