单击“保存复选框列表”按钮

本文关键字:按钮 列表 复选框 保存 单击 | 更新日期: 2023-09-27 18:19:11

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

工作/显示良好。下一部分是用户在下一阶段对每个项目使用复选框的地方,但是,当选择单击"Save"按钮时,将运行以下代码:

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方法运行时,项。select总是false。

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

如果您需要更多的信息,请告诉我。

单击“保存复选框列表”按钮

您不应该在每次回发时调用PopulateList方法。这将在每次单击按钮时重新绑定您的CheckBoxList。在页面加载中这样做:-

if(!IsPostBack)
{
   PopulateList();
}