我在aspx代码中有以下代码。我想将ListItem复选框添加到ColumnsList并单击所有“选中的对象”。

但是,当我尝试在按钮上单击选定的项目时,ColumnsList的计数变为0。

<asp:checkboxlist runat="server" EnableViewState="true" id="ColumnsList"/>

在后面的代码中,我将数据添加到我的ColumnsList中,如下所示
public override void OnLoad()
{
    if(!this.IsPostBack)
    {
       this.ColumnsList.Items.Add(new ListItem { Text= "Text1",  Value = "value1"    });
       this.ColumnsList.Items.Add(new ListItem { Text= "Text2",  Value = "value2"  });
    }
}

//这是按钮点击监听器
private void Button_Click(object sender, EventArgs eventArgs)
{
    // Count is 0 instead of 2
    var count = this.ColumnsList.Items.Count;
    foreach(ListItem item in this.ColumnsList.Items)
    {
        var selected = item.Selected;
        // add selected to a list..etc

    }
}

注意:该应用程序已部署在共享点2010中。

最佳答案

我尝试模拟您正在尝试的方法,这是逐步解决的方法。


protected void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack)
    {
        this.ColumnsList.Items.Add(new ListItem { Text= "Text1",  Value = "value1" });
        this.ColumnsList.Items.Add(new ListItem { Text = "Text2", Value = "value2" });
        this.ColumnsList.Items.Add(new ListItem { Text = "Text3", Value = "value3" });
        this.ColumnsList.Items.Add(new ListItem { Text = "Text4", Value = "value4" });
    }
}


protected void Button1_Click(object sender, EventArgs e)
{
    var count = this.ColumnsList.Items.Cast<ListItem>().Count(li => li.Selected);
}

注意:检查您的按钮单击事件。 this.ColumnsList.Items.Count将返回您在ComboBoxList中存在的项目的计数,并且item.Selected from循环将告诉您是否已选择该项目。但是,var selected将为您提供最后一项的状态,因为您将覆盖每个项目的值。

10-07 18:33