【发布时间】:2014-07-31 10:07:21
【问题描述】:
我有一个数据网格视图,它的内容从数据库绑定。有3列。姓名、地址、手机。我有一个用于过滤 datadridview 名称列的数据的文本框。如果我在文本框中写“Sa”,gridview 焦点将在 Sa.......除“Sa”外,所有数据都将显示在 datagridview 中,但集中在“Sa ...”上。我该怎么做?
【问题讨论】:
标签: c# winforms datagridview
我有一个数据网格视图,它的内容从数据库绑定。有3列。姓名、地址、手机。我有一个用于过滤 datadridview 名称列的数据的文本框。如果我在文本框中写“Sa”,gridview 焦点将在 Sa.......除“Sa”外,所有数据都将显示在 datagridview 中,但集中在“Sa ...”上。我该怎么做?
【问题讨论】:
标签: c# winforms datagridview
你可以试试下面的代码..
我们在这里所做的是,每当用户在文本框中输入内容时,我们都会遍历列索引 (0) 的每个单元格值,当找到匹配值时,我们会突出显示整行。
private void textBox1_TextChanged(object sender, EventArgs e)
{
//Use could set the SelectionMode within FormLoad as well.
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.ClearSelection();
foreach (DataGridViewRow item in dataGridView1.Rows)
{
if (item.Cells[0].Value.ToString().Equals(textBox1.Text))
{
item.Selected = true;
}
}
}
【讨论】:
试试这个,在文本框中更改值时可能会更快。
int j=dgv.Rows.Count;
for (int i = 0; i < dgv.Rows.Count; i+= 2)
{
if (dgv.Rows[i].Cells["MyField"].Value.ToString().Contains(txtSearch.Text))
{
dgv.CurrentCell = dgv.Rows[i].Cells["MyField"];
dgv.FirstDisplayedScrollingRowIndex = i;
break;
}
if (j > -1 && dgv.Rows[j].Cells["MyField"].Value.ToString().Contains(txtSearch.Text))
{
dgv.CurrentCell = dgv.Rows[j].Cells["MyField"];
dgv.FirstDisplayedScrollingRowIndex = j;
break;
}
j--;
}
FirstDisplayedScrollingRowIndex 将滚动网格以在网格显示区域的第一行显示该行。
【讨论】: