WebForms将CheckboxList值传递给List <t> </t>

时间:2010-11-27 09:03:12

标签: c# asp.net linq arrays webforms

我有一个GridView,我有一个List绑定 - 我希望能够允许基于多个CheckBoxLists过滤数据。

为了论证,让我说我有一个工作列表,我想通过代码过滤作业 - 所以我会有一个像

这样的CheckBoxList
  • C#
  • ASP.NET
  • PHP
  • F#
  • 等。

如果有人选择了多个代码,那么如何将值传递给List以重新绑定到GridView?有没有办法将值作为数组传递?或者也许是逗号分隔的字符串?

任何例子(我是C#男孩)都会非常感激,我希望我已经妥善解释了:S

3 个答案:

答案 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();