返回页面时,尝试保留复选框列表的内容

时间:2013-12-05 18:47:30

标签: c# asp.net

我在页面1上有一个复选框列表和一个按钮,第2页上有一个标签和一个按钮。我要做的是记住在从第2页返回第1页时检查了哪些复选框?我迷失在这里是我的代码。我试过制作一个集合,但那不起作用?或者应该使用数组??

Page1.aspx的

 namespace Form
 {
 public partial class Page2 : System.Web.UI.Page
 {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string daysrequested = "";
        int count = 0;

        foreach (ListItem daysItem in Checkboxlist1.Items)
        {
            if (daysItem.Selected)
            {

                daysrequested += "  <br /> " + daysItem.Value;
                count++;

            }
        }

        Session["daysre"] = daysrequested;
        Response.Redirect("Page2.aspx");
    }

Page2.aspx

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

  namespace Form
 {
  public partial class Page21 : System.Web.UI.Page
 {
    protected void Page_Load(object sender, EventArgs e)
    {
        string days = (string)Session["daysre"];
        daysLabel.Text = String.Format("You picked" + days);
    }

    protected void btn_Click(object sender, EventArgs e)
    {
        Response.Redirect ( "Page1.aspx");
    }
    }
    }

4 个答案:

答案 0 :(得分:0)

第1页:

按钮单击会在会话中存储检查列表的选中值 并再分配一个会话(“Page2Visited”)=“1”

在page_load函数

如果会话(“Page2Visited”)=“1”则

将所有存储的会话值分配为检查列表

否则

将核对清单中的所有值保持为未选中状态

结束如果

清除所有会话

答案 1 :(得分:0)

首先,将所选项目保留在字符串变量中并稍后存储在Session对象中并不是一个好主意。您可以将它们添加到数组或通用列表中。稍后,您可以格式化读取数组项的显示字符串(Page2页面的page_load方法)。

如果您回到第1页,您的商品将不会被选中,因为您还没有处理它。您需要阅读先前设置的Session对象并选择所选项目(在Page1 Page_Load方法内)。

答案 2 :(得分:0)

不要使用string作为数据类型来保存复选框列表项&#39;价值,而是List<string>,因为ListItem的{​​{1}}属性是Value,如下所示:

string

现在在第2页的protected void Button1_Click(object sender, EventArgs e) { List<string> daysrequested = new List<string>(); foreach (ListItem daysItem in Checkboxlist1.Items) { if (daysItem.Selected) { daysrequested.Add(daysItem.Value); } } Session["daysre"] = daysrequested; Response.Redirect("Page2.aspx"); } 中,您可以从Page_Load中删除列表,如下所示:

Session

最后,要重新检查第1页中的复选框,请在protected void Page_Load(object sender, EventArgs e) { List<string> requestedDays = new List<string>(); requestedDays = Session["daysre"] as List<string>; StringBuilder theRequestedDaysStringBuilder = new StringBuilder(); foreach(string day in requestedDays) { theRequestedDaysStringBuilder.Append(day); } daysLabel.Text = String.Format("You picked" + theRequestedDaysStringBuilder.ToString()); } 中执行此操作:

Page_Load

答案 3 :(得分:0)

我刚刚制作了一个重现错误的解决方案,复制粘贴了你的整个代码但没有得到任何错误,事实上它的工作正如你想要的那样

所以也许可以检查一下页码 导致您提供的代码

public partial class Page21 : System.Web.UI.Page

在你的Page2上