我希望用户能够在 DataGridView (dgv) 的列中搜索数字。 dgv 可以保持许多记录。每条记录都有一个项目编号。因此,我希望用户能够在“项目编号”列中搜索项目编号。我的列是: ProjectID(不可见);图片(无标题文本);项目编号;项目名;公司;接触。
这是我的代码:
private void btnSearch_Click(object sender, EventArgs e)
{
string searchValue = textBox1.Text;
int rowIndex = -1;
dgvProjects.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
foreach (DataGridViewRow row in dgvProjects.Rows)
{
if (row.Cells[row.Index].Value.ToString().Equals(searchValue))
{
rowIndex = row.Index;
dgvProjects.Rows[row.Index].Selected = true;
break;
}
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
问题#1:到目前为止它所做的事情:用户在 TextBox1 中键入项目编号。当他/她单击该按钮时,代码会在行中搜索该字符串,当找到项目编号时,该行将被选中。它工作正常,但只能一次。当我想搜索其他项目编号时,没有任何反应。
问题#2:我认为可以通过仅搜索“项目名称”列的值来以更好的方式完成此操作。但我应该如何正确地做到这一点呢?
我用来搜索的代码来自这个答案 https://stackoverflow.com/q/10179223/1671161
为什么使用 row.Cells[row.Index]。您需要指定要搜索的列的索引(问题#2)。例如,您需要将 row.Cells[row.Index] 更改为 row.Cells[2],其中 2 是列的索引:
private void btnSearch_Click(object sender, EventArgs e)
{
string searchValue = textBox1.Text;
dgvProjects.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
try
{
foreach (DataGridViewRow row in dgvProjects.Rows)
{
if (row.Cells[2].Value.ToString().Equals(searchValue))
{
row.Selected = true;
break;
}
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)