【问题标题】:C# Using .Contains on a RadComboboxItem searching for a stringC# 在 RadComboboxItem 上使用 .Contains 搜索字符串
【发布时间】:2015-07-06 15:36:21
【问题描述】:

目前我正在尝试创建一些级联组合框。该程序有 4 个 RadComboBoxes(telerik 控件)。我将默认数据放入下拉列表中,一切都很好。我可以从这些框中进行多项选择。当我从框 1 中选择值时,它应该过滤框 2 中的选择。

protected void rcbProgram_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {            
        rcbPartGroup.DataSource = db.tblPartStyles.Where(c=>rcbProgram.CheckedItems.Contains(c.Program)).Select(c => c.PartGroup);
        rcbPartGroup.DataBind();

    }

我希望 rcbPartGroup 的数据源是 tblPartStyles 的 PartGroup 字段,其中 Program 字段在 rcbProgram 的检查列表中。这可以正常工作,但 rcbProgram.CheckedList 是一个列表,不会与字符串(程序字段值)进行比较。如果两者都是字符串,我仍然很难理解这将如何工作,但现在我有两种不同的类型,我无法转换。有人知道我可以做些什么来完成这项工作吗?

【问题讨论】:

  • 你能不能制作一个字符串列表,然后遍历检查的项目,获取你需要的字符串并将它们添加到你的新列表中?就像一个 foreach(rcbProgram.CheckedItems 中的 var 项)
  • 我就是这么做的。以这种方式使用 .Contains 比想出解决方案更令人困惑。
  • 很高兴你成功了 :)

标签: c# linq telerik type-conversion radcombobox


【解决方案1】:

起初我对 lambda 语句有点困惑。我做了一个简单的修复。我创建了一个字符串列表并通过一个 foreach 将值添加到 CheckedItems 列表中。然后我使用字符串列表来执行 lambda 过滤器。

 protected void rcbProgram_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        **List<String> _selectedItems = new List<String>();
        foreach (RadComboBoxItem i in rcbProgram.CheckedItems)
        {
            _selectedItems.Add(i.Value);
        }**


        rcbPartGroup.DataSource = db.tblPartStyles.Where(c=>_selectedItems.Contains(c.Program)).Select(c => c.PartGroup).Distinct();
        rcbPartGroup.DataBind();

    }

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多