C# Telerik组合框选中所有项目
我正在使用C#、Asp.NET4.0和Telerik,我正在尝试与RadComboBox交互 我用如下实体数据源填充它:C# Telerik组合框选中所有项目,c#,asp.net,combobox,telerik,checkeditems,C#,Asp.net,Combobox,Telerik,Checkeditems,我正在使用C#、Asp.NET4.0和Telerik,我正在尝试与RadComboBox交互 我用如下实体数据源填充它: <RadComboBox ID="cbMyCombo" runat="server" AutoPostBack="true" CheckBoxes="true" DataSourceID="edsMySource" DataTextField="Name" DataValueField="Number"> protected override void OnLo
<RadComboBox ID="cbMyCombo" runat="server" AutoPostBack="true" CheckBoxes="true" DataSourceID="edsMySource" DataTextField="Name" DataValueField="Number">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
for (int i = 0; i < cbMyCombo.Items.Count; i++)
{
cbMyCombo.Items[i].Checked = true;
}
}
}
现在,它已从数据库中正确填充,但我的所有项目都未选中。。。我试图通过添加以下属性“checkbox=true”来检查它们,但未成功,但它不起作用
我试图在代码中更改它,如下所示:
<RadComboBox ID="cbMyCombo" runat="server" AutoPostBack="true" CheckBoxes="true" DataSourceID="edsMySource" DataTextField="Name" DataValueField="Number">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
for (int i = 0; i < cbMyCombo.Items.Count; i++)
{
cbMyCombo.Items[i].Checked = true;
}
}
}
protected override void OnLoad(事件参数e)
{
基础荷载(e);
对于(int i=0;i
不错的尝试,没有雪茄
我觉得我在页面生命周期中的错误时刻做了这件事,但我不知道如何正确地做…试试这个
将OnItemDataBound
事件添加到RadCombobox
像这样
protected void RadComboBox1_ItemDataBound(object o, RadComboBoxItemEventArgs e)
{
e.Item.Checked = true;
}
还有另一种方法可以处理这种情况。如果您只想选中组合框中的所有项目,那么您也可以在客户端这样做。RadControls具有丰富的客户端API支持,所以您可以从客户端本身使用控件 我尝试了一个samll示例来说明这个场景。我在页面上定义了以下RadComboix:
<telerik:RadComboBox runat="server" CheckBoxes="true" OnClientLoad="clientLoadHandler"
ID="radCombo"></telerik:RadComboBox>
我已经命名了combobox,将复选框设置为true,并且在客户端加载时添加了一个客户端事件处理程序。在本例中,我从服务器绑定数据源,如下所示:
List<string> colors = new List<string>
{
"Violet",
"Indigo",
"Blue",
"Green",
"Yellow",
"Orange",
"Red"
};
radCombo.DataSource = colors;
radCombo.DataBind();
List colors=新列表
{
“紫罗兰”,
“靛蓝”,
“蓝色”,
“绿色”,
“黄色”,
“橙色”,
“红色”
};
radCombo.DataSource=颜色;
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)
}
}
函数clientLoadHandler(发送方){
var组合=发送方;
var items=combo.get_items();
var itemCount=items.get\u count()
对于(变量计数器=0;计数器
如您所见,函数的sender参数是combobox。我从combobox中获取项目,循环遍历每个项目,并使用set_checked(布尔)函数设置其checked属性
希望你觉得这些信息有用。一定要让我知道你对这个解决方案的看法
Lohith(Telerik India的技术传道者)我刚刚发现了这一点是的!非常感谢你的回答!由于第一个答案看起来更干净,我会同意它,但我感谢答案和这个解决方案!将为学习目的而尝试!谢谢你的回答!在我的情况下,我发现你的解决方案有问题。。。1) 页面加载并检查所有项目,一切正常。2) 我取消选中一些项目,并验证是否重新加载面板和我的组合框。。。3) 重新加载后,页面将根据我以前的选择显示正确的数据,但在我的组合框中,所有项目将再次选中。。。这是因为我的组合框与页面的其余部分直接位于同一个面板中,因此,它也会被重新加载……你是对的。在“重新加载”页面中,它将再次尝试重新检查所有项目。但根据您的业务逻辑,您始终可以调整代码以处理已检查或未检查的代码:)。我只是想让您知道,radcontrols也可以使用客户端API,它们有时会派上用场。我注意到了您的示例,很快肯定会有所帮助:)谢谢您的帮助!