2015-08-20 65 views
1

我有一個asp.net webform網站,其中存儲數據在一個會話,並在第三頁上顯示的條目輸入pg1 &第2頁。檢索選定的複選框值從上一頁

第一頁默認預選第一個複選框,但如果用戶選擇/取消選擇複選框,當用戶在第二頁上時,有一個後退按鈕,但當它被點擊時,我不知道如何重新顯示選中/取消選中的複選框,因爲只檢查默認選項。

我是新來使用asp和會話存儲,所以我可能會做一些完全錯誤的事情,所以請告訴我,如果我是,也幫助我解決我的情況,而不是隻是投票下來沒有任何解釋。

反正我的代碼是:

HTML

<div class="form-group"> 
    <div class="col-xs-offset-0 col-sm-offset-4 col-sm-3">All services</div> 
    <div class="col-sm-1"> 
      <asp:CheckBox ID="Step02AllServices" runat="server" Checked="True" /> 
    </div> 
</div> 
<div class="form-group"> 
    <div class="col-xs-offset-0 col-sm-offset-4 col-sm-3">Site content uploading only</div> 
    <div class="col-sm-1"> 
      <asp:CheckBox ID="Step02ContentUploading" runat="server" /> 
    </div> 
</div> 
<div class="form-group"> 
    <div class="col-xs-offset-0 col-sm-offset-4 col-sm-3">Site content &amp; layout checking</div> 
    <div class="col-sm-1"> 
      <asp:CheckBox ID="Step02ContentLayoutChecking" runat="server" Enabled="False" /> 
    </div> 
</div> 

代碼隱藏

protected void Step02SubmitButton_Click(object sender, EventArgs e) 
{ 
    Session["Step02AllServices"] = Step02AllServices.Checked; 
    Session["Step02ContentUploading"] = Step02ContentUploading.Checked; 
    Session["Step02ContentLayoutChecking"] = Step02ContentLayoutChecking.Checked; 
    Response.Redirect("/Quotation/pg3.aspx"); 
} 

我知道這是需要在我Page_Load只是不知道該怎麼辦它。

下面是我對單選按鈕和測試領域的另一頁上

if (txtData2.Text == string.Empty && Session["pg2"] != null) 
{ 
    txtData2.Text = Session["pg2"].ToString(); 

    if (Session["pg2Yes"].ToString() == "Yes") 
    { 
      pg2Yes.Checked = Session["pg2Yes"].Equals("Yes"); 
    } 

    if (Session["pg2No"].ToString() == "No") 
    { 
      pg2No.Checked = Session["pg2No"].Equals("No"); 
    } 
} 

回答

1

讓我們假設你是第3頁,並且單擊後退按鈕您重定向到2

在第2頁加載時,您需要檢查它是否是新加載(而不是回發)以及是否包含會話中的值。如果兩者均爲true,則需要從會話中獲取值並選中複選框。

所以,寫了下面的代碼Page2Load

//if you are loading the new page 
if (!Page.IsPostBack) 
{ 
    if(Session["Step02AllServices"] != null) 
    { 
     Step02AllServices.Checked = (bool) Session["Step02AllServices"]; 
     //similarly assign other checkbox values as they are in session already 
    } 
    else 
    { 
     //do normal assignment 
    } 
} 
+0

我仍然遇到同樣的問題,當我返回頁面時,默認複選框被重新選中,我選擇的不是 – murday1983

+0

其實您的解決方案几乎可以工作。它不工作的原因是由於我的第一個複選框被默認選中。我必須找到另一種方式來做這個 – murday1983

0

檢查下面簡單的實現和提高其根據自己的需求,並且可以使用單頁來完成

ASPX代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div id="div1" runat="server"> 
      <asp:CheckBox ID="CheckBox1" runat="server" /> 
      <asp:CheckBox ID="CheckBox2" runat="server" /><asp:Button ID="Button1" runat="server" Text="Next" OnClick="Button1_Click" /> 
     </div> 
     <div id="div2" runat="server" visible="false"> 
      <asp:Button ID="Button2" runat="server" Text="Back" OnClick="Button2_Click"/> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
      <asp:Button ID="Button3" runat="server" Text="Next" OnClick="Button3_Click"/> 
     </div> 
     <div id="div3" runat="server" visible="false"> 
      <asp:Button ID="Button4" runat="server" Text="Back" OnClick="Button4_Click"/> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
      <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> 
      <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> 
      <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label> 
     </div> 
    </form> 
</body> 
</html> 

cs碼:

using System; 

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

     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      div1.Visible = false; 
      div2.Visible = true; 
      div3.Visible = false; 
     } 
     protected void Button2_Click(object sender, EventArgs e) 
     { 
      div1.Visible = true; 
      div2.Visible = false; 
      div3.Visible = false; 
     } 
     protected void Button3_Click(object sender, EventArgs e) 
     { 
      div1.Visible = false; 
      div2.Visible = false; 
      div3.Visible = true; 
      Label1.Text = CheckBox1.Checked.ToString(); 
      Label2.Text = CheckBox2.Checked.ToString(); 
      Label3.Text = TextBox1.Text; 
      Label4.Text = TextBox2.Text; 
     } 
     protected void Button4_Click(object sender, EventArgs e) 
     { 
      div1.Visible = false; 
      div2.Visible = true; 
      div3.Visible = false; 
     } 
    } 
} 
+0

不要以爲這是相關的我的問題。我想要一個關於如何保留用戶選中的複選框的解決方案,我不能在代碼片段中的任何地方看到這一點 – murday1983