我目前在我的页面上有一个CheckBoxList,我使用以下代码动态添加项目到Page_Load:
ASP控制:
<asp:CheckBoxList ID="clistSites" runat="server" />
填充(在页面加载时调用):
public void PopulateList()
{
siteList.Load(siteListPath);
XmlNodeList nodeList = siteList.SelectNodes("/sites/site");
clistSites.Items.Clear();
foreach (XmlNode node in nodeList)
clistSites.Items.Add(node["name"].InnerText.ToString());
}
哪个正常/正常显示。下一部分是用户对下一阶段的每个项目使用复选框的位置,但是,当选择单击&#34;保存&#34;按钮,这将运行以下代码:
ASP控制:
<asp:Button runat="server" ID="btnPreUpdateNextStep" Text="Save and proceed" OnClick="btnPreUpdateNextStep_Click" />
代码背后:
protected void btnPreUpdateNextStep_Click(object sender, EventArgs e)
{
foreach (ListItem item in clistSites.Items)
if (item.Selected) SiteList.Add(item.Text.ToString());
}
此应将它们保存到列表中,如下所示:
public List<string> SiteList
{
get
{
if (this.ViewState["SiteList"] == null)
this.ViewState["SiteList"] = new List<String>();
return (List<String>)(this.ViewState["SiteList"]);
}
set
{
this.ViewState["SiteList"] = value;
}
}
但是,当btnPreUpdateNextStep_Click方法运行时, item.select 始终为false。
我只是想知道如何通过页面刷新使所选项目保持不变,并且还可以获取所选项目的文本。
如果您需要其他信息,请告诉我们。
答案 0 :(得分:1)
您不应在每次回发时调用PopulateList
方法。每次单击按钮时,这将重新绑定CheckBoxList
。在页面加载中执行以下操作: -
if(!IsPostBack)
{
PopulateList();
}