【问题标题】:Saving CheckBoxList checked Items on button click在按钮单击时保存 CheckBoxList 选中的项目
【发布时间】:2015-10-24 04:11:52
【问题描述】:

我目前在我的页面上有一个 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。

我只想知道如何使选定的项目即使在页面刷新后仍然存在,并且还获取选中项目的文本。

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

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

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

    if(!IsPostBack)
    {
       PopulateList();
    }
    

    【讨论】:

    • 解决了,哇,这么小的东西。我明白为什么我必须这样做,谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2014-03-14
    • 2019-10-27
    • 1970-01-01
    • 2015-08-09
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多