RadComboBoxItems未添加到多个RadComboBox

时间:2012-07-30 19:19:33

标签: asp.net combobox telerik

我真正想做的就是用相同的项目填充三个不同的组合框。当此代码执行时,只有一个组合框获取值。欢迎任何帮助。谢谢!

for (int i = 0; i < 100; i++)
        {
            RadComboBoxItem li = new RadComboBoxItem();
            li.Text = i.ToString();
            li.Value = i.ToString();
            InputPairThousandValueComboBox.Items.Add(li);
            InputUsertThousdandValueComboBox.Items.Add(li);
            InputCurrentlyListedThousdandComboBox.Items.Add(li);

        }

2 个答案:

答案 0 :(得分:2)

我在Telerik文档中找不到明确说明这一点的内容,但似乎RadComboBoxItem的单个实例只能包含在 RadComboBox中;您无法在控件之间共享RadComboBoxItem

The docs提示:RadComboBoxItem有一个'所有者'属性,该属性是对包含该项目的RadComboBox的引用(暗示只有一个所有者)

在封面下,第二个&amp;第三次Add(...)次调用最有可能首先从已经存在的组合框中删除该项目。

因此,您必须为每个RadComboBoxItem创建单独的RadComboBox。这是使用RadComboBoxItem构造函数执行此操作的一种方法,该构造函数将text和value作为参数。

for (int i = 0; i < 100; i++)
{
   var val = i.ToString();
   InputPairThousandValueComboBox.Items.Add(new RadComboBoxItem(val, val));
   InputUsertThousdandValueComboBox.Items.Add(new RadComboBoxItem(val, val));
   InputCurrentlyListedThousdandComboBox.Items.Add(new RadComboBoxItem(val, val));
}

答案 1 :(得分:0)

对于那些仍然遇到此问题的人,我发现的一种方法是将项目添加为字典,然后与数据源绑定。 link to telerik form

    Dictionary<string, string> comboSource = new Dictionary<string, string>();
    comboSource.Add("", "");
    comboSource.Add(user.Rs.GetString("txtDate"), "phDate");
    comboSource.Add(user.Rs.GetString("txtBranch"), "mhBranch");
    comboSource.Add(user.Rs.GetString("txtDepartmentCode"), "mhDepartmentCode");
    comboSource.Add(user.Rs.GetString("txtLocationCode"), "mhLocationCode");
    comboSource.Add(user.Rs.GetString("txtModelCode"), "mhModel");
    comboSource.Add(user.Rs.GetString("txtProductCode"), "phProductCode");
    comboSource.Add(user.Rs.GetString("txtShiftCode"),"shShiftCode");
    comboSource.Add(user.Rs.GetString("txtSubcategory"),"phSubcategory");

    cboSort1.DataSource = cboSort2.DataSource = cboSort3.DataSource = cboSort4.DataSource = comboSource;
    cboSort1.DataTextField = cboSort2.DataTextField = cboSort3.DataTextField = cboSort4.DataTextField = "Key";
    cboSort1.DataValueField = cboSort2.DataValueField = cboSort3.DataValueField = cboSort4.DataValueField = "Value";
    cboSort1.DataBind();
    cboSort2.DataBind();
    cboSort3.DataBind();
    cboSort4.DataBind();