Telerik Combobox检查所有项目

时间:2012-07-11 06:33:17

标签: c# asp.net combobox telerik checkeditems

我正在使用C#,Asp.Net 4.0和Telerik,我正在尝试与RadComboBox进行交互。

我用这样的实体数据源填充它:

<RadComboBox ID="cbMyCombo" runat="server" AutoPostBack="true" CheckBoxes="true" DataSourceID="edsMySource" DataTextField="Name" DataValueField="Number">

现在,它已从数据库中正确填充,但我的所有项目都未经检查...我尝试通过添加以下属性“CheckBoxes = true”来检查它们,但它没有成功...

我试图在后面的代码中更改它:

protected override void OnLoad(EventArgs e)
{
  base.OnLoad(e);

  for (int i = 0; i < cbMyCombo.Items.Count; i++)
    {
      cbMyCombo.Items[i].Checked = true;
    }
  }
}

很好的尝试,没有雪茄......

我觉得我是在页面生命周期的错误时刻做的,但我不知道如何正确地做到这一点......

2 个答案:

答案 0 :(得分:5)

试试这个

OnItemDataBound

中添加RadCombobox个活动 像这样

protected void RadComboBox1_ItemDataBound(object o, RadComboBoxItemEventArgs e) 
{ 
    e.Item.Checked = true;
}

答案 1 :(得分:1)

还有另一种方法可以处理这种情况。如果你想要的只是 - 要检查组合框中的所有项目 - 那么你也可以在客户端这样做。 RadControls具有丰富的客户端API支持,因此您可以从客户端本身使用控件。

我尝试了一个小例子来说明这种情况。我在页面上定义了以下radcomboboix:

<telerik:RadComboBox runat="server" CheckBoxes="true" OnClientLoad="clientLoadHandler"
        ID="radCombo"></telerik:RadComboBox>

我已经命名了组合框,将CheckBoxes设置为true,并且我添加了一个客户端事件处理程序OnClientLoad。在这个例子中,我从服务器绑定数据源,如下所示:

 List<string> colors = new List<string>
        {
            "Violet",
            "Indigo",
            "Blue",
            "Green",
            "Yellow",
            "Orange",
            "Red"
        };
        radCombo.DataSource = colors;
        radCombo.DataBind();

这是javascript函数:

function clientLoadHandler(sender) {
            var combo = sender;
            var items = combo.get_items();
            var itemCount = items.get_count()
            for (var counter = 0; counter < itemCount; counter++) {
                var item = items.getItem(counter);
                item.set_checked(true)
            }
        }

如您所见,该函数的sender参数是组合框。我从组合框中获取项目并循环遍历每个项目并使用set_checked(boolean)函数设置其checked属性。

希望您发现此信息有用。请告诉我您对此解决方案的看法。

Lohith(技术传播者,Telerik India)