2

我正在使用 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;
    }
  }
}

不错的尝试,没有雪茄...

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

4

2 回答 2

5

试试这个

OnItemDataBound活动添加到您的RadCombobox

像这样

protected void RadComboBox1_ItemDataBound(object o, RadComboBoxItemEventArgs e) 
{ 
    e.Item.Checked = true;
}
于 2012-07-11T06:39:42.573 回答
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) 函数设置其选中属性。

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

Lohith (Tech Evangelist, Telerik India)

于 2012-07-11T08:17:29.897 回答