我在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
将为您提供最后一项的状态,因为您将覆盖每个项目的值。