我有一个GridView,我有一个List绑定 - 我希望能够允许基于多个CheckBoxLists过滤数据。
为了论证,让我说我有一个工作列表,我想通过代码过滤作业 - 所以我会有一个像
这样的CheckBoxList如果有人选择了多个代码,那么如何将值传递给List以重新绑定到GridView?有没有办法将值作为数组传递?或者也许是逗号分隔的字符串?
任何例子(我是C#男孩)都会非常感激,我希望我已经妥善解释了:S
答案 0 :(得分:0)
使用ObservableCollection<T>
。它自动允许gridview“观察”基础数据源已经改变,从而自行更新。
答案 1 :(得分:0)
我不确定我完全理解你的问题。但我经常执行以下操作以将ListItems转换为可通过LINQ to objects查询的表单:
var items = cblLanguages.Items.Cast<ListItem>();
// Selected Items
var selectedItems = items.Where(li => li.Selected);
// Item's containing 'C'
var itemsWithC = items.Where(li => li.Text.Contains("C"));
// Values between 2 and 5
var itemsBetween2And5 = from li in items
let v = Convert.ToInt32(li.Value)
where 2 <= v && v <= 5
select li;
答案 2 :(得分:0)
无论您对网格视图进行过滤,都必须在过滤之前手动构建列表。
var languages = new List<string>();
foreach (ListItem item in cblLanguages.Items)
{
if (item.Selected)
{
languages.Add(item.Value);
}
}
然后当你过滤你可以做类似的事情(例如使用linq2sql)
var jobs = db.Jobs.Where(x => langauges.Contains(x.LanguageCode));
gvJobs.DataSource = jobs;
gvJobs.DataBind();