C#使用数组的值筛选DataGridView
我想知道如何使用BindinSource.Filter进行搜索。我的代码是这样的C#使用数组的值筛选DataGridView,c#,datagridview,filter,bindingsource,C#,Datagridview,Filter,Bindingsource,我想知道如何使用BindinSource.Filter进行搜索。我的代码是这样的Suche.Filter=string.Format(“{0}='{1}'”,“ID”,ergebnis)ergebnis是我的数组,包含我联系人的所有ID。现在我想在DGV中显示具有相同ID的所有联系人 我就是这样解决的: private void filter(int selectedID) { DataTable dtFilter = new DataTable(); //speichere
Suche.Filter=string.Format(“{0}='{1}'”,“ID”,ergebnis)
ergebnis是我的数组,包含我联系人的所有ID。现在我想在DGV中显示具有相同ID的所有联系人
我就是这样解决的:
private void filter(int selectedID) {
DataTable dtFilter = new DataTable();
//speichere GridView zum Filtern
dtFilter = (DataTable)this.grdMDT.DataSource;
try {
dtFilter = dtFilter.Select("ID = " + selectedID).CopyToDataTable();
this.DGV.DataSource = dtFilter;
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
我只需将DataGridView
的内容复制到一个新的DataTable
中,然后使用Select
获得所需的所有结果。然后我为GridView
设置了一个新的DataSource
您可能希望将GridView
的原始内容存储在单独的DataTable
中,以清除筛选结果
当然,您需要在for循环之外执行此操作。我就是这样解决的:
private void filter(int selectedID) {
DataTable dtFilter = new DataTable();
//speichere GridView zum Filtern
dtFilter = (DataTable)this.grdMDT.DataSource;
try {
dtFilter = dtFilter.Select("ID = " + selectedID).CopyToDataTable();
this.DGV.DataSource = dtFilter;
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
我只需将DataGridView
的内容复制到一个新的DataTable
中,然后使用Select
获得所需的所有结果。然后我为GridView
设置了一个新的DataSource
您可能希望将GridView
的原始内容存储在单独的DataTable
中,以清除筛选结果
当然,您需要在for循环之外执行此操作。您可以通过获取视图并使数组成为对象数组来应用过滤器
ICollectionView view = CollectionViewSource.GetDefaultView(yourdatagridview);
view.Filter = FilterPerItem;
yourdatagridview.ItemsSource = view;
在FilterPerItem
中添加过滤器逻辑
private bool FilterPerItem(Contact item)
{
int rightID = 1;
if (item.ID == rightID)
{
return true;
}
else return false;
}
通过获取视图并使数组成为对象数组,可以应用过滤器
ICollectionView view = CollectionViewSource.GetDefaultView(yourdatagridview);
view.Filter = FilterPerItem;
yourdatagridview.ItemsSource = view;
在FilterPerItem
中添加过滤器逻辑
private bool FilterPerItem(Contact item)
{
int rightID = 1;
if (item.ID == rightID)
{
return true;
}
else return false;
}
我为我的代码找到了一个结果,谢谢大家
try
{
int[] ergebnis = new int[20];
var filterString = new List<string>();
for (int i = 1; i < result.Length; i++)
{
int j = Int32.Parse(result[i][12]);
ergebnis[i] = j;
filterString.Add(string.Format("{0} = '{1}'", "ID", j));
}
Suche.Filter = string.Join(" OR ", filterString);
kitba();
}
catch (IndexOutOfRangeException ex)
{
Debug.WriteLine(ex);
}
试试看
{
int[]ergebnis=新int[20];
var filterString=新列表();
for(int i=1;i
我找到了我的代码的结果,谢谢大家
try
{
int[] ergebnis = new int[20];
var filterString = new List<string>();
for (int i = 1; i < result.Length; i++)
{
int j = Int32.Parse(result[i][12]);
ergebnis[i] = j;
filterString.Add(string.Format("{0} = '{1}'", "ID", j));
}
Suche.Filter = string.Join(" OR ", filterString);
kitba();
}
catch (IndexOutOfRangeException ex)
{
Debug.WriteLine(ex);
}
试试看
{
int[]ergebnis=新int[20];
var filterString=新列表();
for(int i=1;i