繁体   English   中英

单击按钮保存CheckBoxList选中的项目

[英]Saving CheckBoxList checked Items on button click

我目前在我的页面上有一个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());
}

哪个工作正常/显示正常。 下一部分是用户在下一阶段中使用针对每个项目的复选框的位置,但是,当选择单击“保存”按钮时,它将运行以下代码:

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。

我只想知道如何使选定的项目即使通过页面刷新也能保持不变,并且还可以获取选中项目的文本。

如果您需要其他信息,请告诉我。

您不应该在每次回发中调用PopulateList方法。 每次您单击按钮时,这将重新绑定您的CheckBoxList 在页面加载中执行以下操作:

if(!IsPostBack)
{
   PopulateList();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM