我正在使用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;
}
}
}
很好的尝试,没有雪茄......
我觉得我是在页面生命周期的错误时刻做的,但我不知道如何正确地做到这一点......
答案 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)