【问题标题】:WebForms Passing CheckboxList Values To List<T>WebForms 将 CheckboxList 值传递给 List<T>
【发布时间】:2010-11-27 09:03:11
【问题描述】:

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

为了争论,假设我有一个工作列表,我想按代码过滤工作 - 所以我会有一个 CheckBoxList 之类的

  • C#
  • ASP.NET
  • php
  • F#
  • 等等..

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

任何示例(我是 C# 男孩)将不胜感激,我希望我已经正确解释:S

【问题讨论】:

  • 它是win/web 应用程序吗?您使用的是哪个.net 版本?
  • 对不起它的 webforms,.NET 4 c#.. 你有 webforms 的代码示例

标签: c# asp.net linq arrays webforms


【解决方案1】:

使用 ObservableCollection&lt;T&gt; 。它会自动允许 gridview “观察”底层数据源已更改,从而自行更新。

【讨论】:

  • 感谢您的提示,但它没有回答实际问题?
【解决方案2】:

无论您在哪里对 gridview 进行过滤,您都必须在过滤之前手动构建列表。

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

【讨论】:

    【解决方案3】:

    我不确定我是否完全理解您的问题。但我经常执行以下操作以将 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多