Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Telerik组合框选中所有项目_C#_Asp.net_Combobox_Telerik_Checkeditems - Fatal编程技术网

C# Telerik组合框选中所有项目

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

我正在使用C#、Asp.NET4.0和Telerik,我正在尝试与RadComboBox交互

我用如下实体数据源填充它:

<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,它们有时会派上用场。我注意到了您的示例,很快肯定会有所帮助:)谢谢您的帮助!