c#Datagridview多个过滤器
我正在尝试用两个或多个文本框过滤数据网格。 有没有一个简单的方法来实现这一点?现在,datagrid只根据上次检查的条件进行过滤 我找了一整天,找不到解决办法 这是两个框的代码。我在最后一个框中添加了两个过滤器,但这只是一个猜测,我知道这可能行不通 谢谢,Ac#Datagridview多个过滤器,c#,datagridview,filter,C#,Datagridview,Filter,我正在尝试用两个或多个文本框过滤数据网格。 有没有一个简单的方法来实现这一点?现在,datagrid只根据上次检查的条件进行过滤 我找了一整天,找不到解决办法 这是两个框的代码。我在最后一个框中添加了两个过滤器,但这只是一个猜测,我知道这可能行不通 谢谢,A private void textBox4_TextChanged(object sender, EventArgs e) { BindingSource bs = new BindingSource();
private void textBox4_TextChanged(object sender, EventArgs e)
{
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = "Bank like '%" + textBox4.Text + "%'";
dataGridView1.DataSource = bs;
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = "Bank like '%" + textBox4.Text + "%'";
bs.Filter = "currency like '" + textBox5.Text + "'";
dataGridView1.DataSource = bs;
}
试试这样的
qualityBindingSource.Filter = string.Format("Date_ >= '{0}' AND Date_ <= '{1}'", dateTimePicker1.Text, dateTimePicker2.Text);
qualityBindingSource.Filter=string.Format(“日期”='{0}和日期”BindingSource.DataSource创建新的数据视图({DataTable})
使用MVVM、三个文本框作为过滤器和一个数据网格的简单wpf应用程序
MainWindow.xml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBox Text="{Binding Filter1, UpdateSourceTrigger=PropertyChanged}" Width="100"/>
<TextBox Text="{Binding Filter2, UpdateSourceTrigger=PropertyChanged}" Width="100"/>
<TextBox Text="{Binding Filter3, UpdateSourceTrigger=PropertyChanged}" Width="100"/>
</StackPanel>
<DataGrid Grid.Row="1" ItemsSource ="{Binding ItemView}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Head 1" Binding="{Binding Text1}"/>
<DataGridTextColumn Header="Head 2" Binding="{Binding Text2}"/>
<DataGridTextColumn Header="Head 3" Binding="{Binding Text3}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
ViewModel.cs
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
List<Items> _items;
Items _item;
private static Random random = new Random();
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
private string _filter1 = "";
private string _filter2 = "";
private string _filter3 = "";
public ViewModel()
{
_items = new List<Items>();
for (int i = 0; i < 1000; i++)
{
_item = new Items();
_item.Text1 = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
_item.Text2 = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
_item.Text3 = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
_items.Add(_item);
}
ItemList = new ObservableCollection<Items>(_items);
ItemView = (CollectionView)CollectionViewSource.GetDefaultView(ItemList);
ItemView.Filter = TextFilter;
}
private bool TextFilter(object obj)
{
var data = obj as Items;
if (data != null)
{
return data.Text1.StartsWith(_filter1) && data.Text2.StartsWith(_filter2) && data.Text3.StartsWith(_filter3);
}
return false;
}
private void NotifyPropertyChanged(string property)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
}
public ObservableCollection<Items> ItemList { get; set; }
public CollectionView ItemView { get; set; }
public string Filter1
{
get { return _filter1; }
set
{
_filter1 = value;
NotifyPropertyChanged("Filter1");
ItemView.Refresh();
}
}
public string Filter2
{
get { return _filter2; }
set
{
_filter2 = value;
NotifyPropertyChanged("Filter2");
ItemView.Refresh();
}
}
public string Filter3
{
get { return _filter3; }
set
{
_filter3 = value;
NotifyPropertyChanged("Filter3");
ItemView.Refresh();
}
}
}
public class Items
{
public string Text1 { get; set; }
public string Text2 { get; set; }
public string Text3 { get; set; }
}
公共类视图模型:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
列出项目;
项目(u项目),;
私有静态随机=新随机();
常量字符串chars=“abcdefghijklmnopqrstuvwxyz012456789”;
私有字符串_filter1=“”;
私有字符串_filter2=“”;
私有字符串_filter3=“”;
公共视图模型()
{
_项目=新列表();
对于(int i=0;i<1000;i++)
{
_项目=新项目();
_item.Text1=新字符串(可枚举。重复(字符,10)。选择(s=>s[random.Next(s.Length)]).ToArray();
_item.Text2=新字符串(可枚举。重复(字符,10)。选择(s=>s[random.Next(s.Length)]).ToArray();
_item.Text3=新字符串(可枚举。重复(字符,10)。选择(s=>s[random.Next(s.Length)]).ToArray();
_项目。添加(_项目);
}
ItemList=新的可观察集合(_项);
ItemView=(CollectionView)CollectionViewSource.GetDefaultView(ItemList);
ItemView.Filter=TextFilter;
}
私有布尔文本过滤器(对象obj)
{
var数据=作为项目的obj;
如果(数据!=null)
{
返回data.Text1.StartsWith(_filter1)和&data.Text2.StartsWith(_filter2)和&data.Text3.StartsWith(_filter3);
}
返回false;
}
私有void NotifyPropertyChanged(字符串属性)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(property));
}
公共ObservableCollection项列表{get;set;}
公共集合视图项视图{get;set;}
公共字符串过滤器1
{
获取{return\u filter1;}
设置
{
_过滤器1=数值;
NotifyPropertyChanged(“过滤器1”);
Refresh();
}
}
公共字符串过滤器2
{
获取{return\u filter2;}
设置
{
_过滤器2=数值;
NotifyPropertyChanged(“过滤器2”);
Refresh();
}
}
公共字符串过滤器3
{
获取{return\u filter3;}
设置
{
_过滤器3=数值;
NotifyPropertyChanged(“过滤器3”);
Refresh();
}
}
}
公共类项目
{
公共字符串Text1{get;set;}
公共字符串Text2{get;set;}
公共字符串Text3{get;set;}
}
你说的第一行是什么意思?
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
List<Items> _items;
Items _item;
private static Random random = new Random();
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
private string _filter1 = "";
private string _filter2 = "";
private string _filter3 = "";
public ViewModel()
{
_items = new List<Items>();
for (int i = 0; i < 1000; i++)
{
_item = new Items();
_item.Text1 = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
_item.Text2 = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
_item.Text3 = new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
_items.Add(_item);
}
ItemList = new ObservableCollection<Items>(_items);
ItemView = (CollectionView)CollectionViewSource.GetDefaultView(ItemList);
ItemView.Filter = TextFilter;
}
private bool TextFilter(object obj)
{
var data = obj as Items;
if (data != null)
{
return data.Text1.StartsWith(_filter1) && data.Text2.StartsWith(_filter2) && data.Text3.StartsWith(_filter3);
}
return false;
}
private void NotifyPropertyChanged(string property)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
}
public ObservableCollection<Items> ItemList { get; set; }
public CollectionView ItemView { get; set; }
public string Filter1
{
get { return _filter1; }
set
{
_filter1 = value;
NotifyPropertyChanged("Filter1");
ItemView.Refresh();
}
}
public string Filter2
{
get { return _filter2; }
set
{
_filter2 = value;
NotifyPropertyChanged("Filter2");
ItemView.Refresh();
}
}
public string Filter3
{
get { return _filter3; }
set
{
_filter3 = value;
NotifyPropertyChanged("Filter3");
ItemView.Refresh();
}
}
}
public class Items
{
public string Text1 { get; set; }
public string Text2 { get; set; }
public string Text3 { get; set; }
}