如何使用 DevExpress 查找栏搜索但不过滤网格视图 table?
How to use a DevExpress Find bar to search but not filter a Grid View table?
我有一个包含大量十六进制数据的网格控件,我希望能够使用提供的查找搜索栏在 table 中搜索特定地址。但是,我不希望它过滤掉 上图 中看到的所有数据。相反,我只想向下滚动到该值而不进行任何过滤 (下图)。我一直在使用 Grid Viewer 对象下的一些 OptionsFind 属性,但其中 none 似乎适用于我当前的情况。有没有办法使用 DevExpress 查找栏来执行此操作,或者我是否需要使用不同的控件?如果可以,如何实现?谢谢!请发表评论以获取更多信息,我将编辑问题。
我对这个问题的解决方案如下。
- 禁用 OptionsFind 中的查找、清除和关闭按钮
- 为 GridView 对象创建以下 CustomRowFilter 事件处理程序。 (这可以防止 table 通过在每次尝试过滤时将 handled 属性 设置为 true 来过滤。)
创建一个自定义搜索按钮,在找到包含在 FindFilterText 中的数据所在的行后更改当前聚焦的行。
private void gridViewDataViewer_CustomRowFilter(object sender, DevExpress.XtraGrid.Views.Base.RowFilterEventArgs e)
{
e.Handled = true;
e.Visible = true;
}
private void searchButton_Click(object sender, EventArgs e)
{
int rowHandle = gridViewDataViewer.LocateByValue("Column Name", gridViewDataViewer.FindFilterText);
gridViewDataViewer.FocusedRowHandle = gridViewDataViewer.GetVisibleRowHandle(rowHandle);
}
您可以使用 CustomRowFilter
来防止网格过滤,并使用 ColumnFilterChanged
来聚焦包含搜索值的行:
private void gridView1_CustomRowFilter(object sender, DevExpress.XtraGrid.Views.Base.RowFilterEventArgs e)
{
e.Handled = true;
e.Visible = true;
}
private void gridView1_ColumnFilterChanged(object sender, EventArgs e)
{
for (int i = 0; i < gridView1.DataRowCount; i++)
{
object b = gridView1.GetRowCellValue(i, "Address");
if (b != null && b.ToString().Contains(gridView1.FindFilterText))
{
gridView1.FocusedRowHandle = i;
return;
}
}
}
我有一个包含大量十六进制数据的网格控件,我希望能够使用提供的查找搜索栏在 table 中搜索特定地址。但是,我不希望它过滤掉 上图 中看到的所有数据。相反,我只想向下滚动到该值而不进行任何过滤 (下图)。我一直在使用 Grid Viewer 对象下的一些 OptionsFind 属性,但其中 none 似乎适用于我当前的情况。有没有办法使用 DevExpress 查找栏来执行此操作,或者我是否需要使用不同的控件?如果可以,如何实现?谢谢!请发表评论以获取更多信息,我将编辑问题。
我对这个问题的解决方案如下。
- 禁用 OptionsFind 中的查找、清除和关闭按钮
- 为 GridView 对象创建以下 CustomRowFilter 事件处理程序。 (这可以防止 table 通过在每次尝试过滤时将 handled 属性 设置为 true 来过滤。)
创建一个自定义搜索按钮,在找到包含在 FindFilterText 中的数据所在的行后更改当前聚焦的行。
private void gridViewDataViewer_CustomRowFilter(object sender, DevExpress.XtraGrid.Views.Base.RowFilterEventArgs e) { e.Handled = true; e.Visible = true; } private void searchButton_Click(object sender, EventArgs e) { int rowHandle = gridViewDataViewer.LocateByValue("Column Name", gridViewDataViewer.FindFilterText); gridViewDataViewer.FocusedRowHandle = gridViewDataViewer.GetVisibleRowHandle(rowHandle); }
您可以使用 CustomRowFilter
来防止网格过滤,并使用 ColumnFilterChanged
来聚焦包含搜索值的行:
private void gridView1_CustomRowFilter(object sender, DevExpress.XtraGrid.Views.Base.RowFilterEventArgs e)
{
e.Handled = true;
e.Visible = true;
}
private void gridView1_ColumnFilterChanged(object sender, EventArgs e)
{
for (int i = 0; i < gridView1.DataRowCount; i++)
{
object b = gridView1.GetRowCellValue(i, "Address");
if (b != null && b.ToString().Contains(gridView1.FindFilterText))
{
gridView1.FocusedRowHandle = i;
return;
}
}
}