【问题标题】:Finding a value in a database from a DataGridViewColumn从 DataGridViewColumn 中查找数据库中的值
【发布时间】:2014-04-08 15:22:32
【问题描述】:
我有一个DataGridView,我想从中添加搜索条件。这应该设置为一个帐单表单,其中项目已经保存在某个表中。
因此,每当我开始在名为Bill 的DataGridViewColumn 中输入一个值时,就会打开一个新的ListBox,显示与使用%LIKE 查询输入的值具有相似名称的项目列表。
我在编写%LIKE 查询或显示ListView 时没有问题,我只是不明白如何在输入DataGridViewColumn 的值时主动使用它。
【问题讨论】:
标签:
c#
winforms
datagridview
datagrid
【解决方案1】:
您必须为您的DataGridView 创建一个使用DataGridView.CommitEdit 的事件处理程序DataGridView.CurrentCellDirtyStateChanged。当您的单元格值更改时,此事件可以进行必要的调用以查询您的数据库并主动创建新的ListView。
MSDN article for DataGridView.CommitEdit 很好地解释了这一点。您只需添加ListView。
【解决方案2】:
您必须捕获该特定列单元格的 TexChanged 事件。
在表单加载事件中添加以下代码
this.dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
Add the following events
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//Give the right column index
if (dataGridView1.CurrentCell.ColumnIndex == 0)
{
TextBox tb = (TextBox)e.Control;
tb.TextChanged += new EventHandler(tb_TextChanged);
}
}
在下面的事件中编写逻辑,该事件将在单元格内容被修改时触发。
void tb_TextChanged(object sender, EventArgs e)
{
}