2015-07-30 5 views
0

У меня есть 4-страничная форма ASP.NET, которая хранит данные в сеансе. Кнопка на третьей странице очищает сеанс. Все это работает нормально, но у меня проблема с обновлением значения на моей странице подтверждения, так как она сохраняет/отображает мое первоначальное выбранное значение, и я не могу понять, почему.ASP.Net Моя обновленная ценность из раскрывающегося списка не обновляется/отображается

первый HTML страницу с DropDownList

<asp:DropDownList ID="ddlInnoc" runat="server" class="form-control"> 
    <asp:ListItem Value="0">- - Please Select - -</asp:ListItem> 
    <asp:ListItem Value="Male">Male</asp:ListItem> 
    <asp:ListItem Value="Female">Female</asp:ListItem> 
</asp:DropDownList> 

первый код страницы За который снова отображает выбранное значение

protected void Page_Load(object sender, EventArgs e) 
    { 
     txtData1.Focus(); 

     if (txtData1.Text == string.Empty && Session["pg1input"] != null) 
     { 
      txtData1.Text = Session["pg1input"].ToString(); 
     } 

     if (Session["pg1dd"] != null) 
     { 
      ddlInnoc.SelectedValue = Session["pg1dd"].ToString(); 
     } 

     //if (Session["pg1dd"].ToString() == "") 
     //{ 
     // ddlInnoc.SelectedValue = Session["pg1dd"].ToString(); 
     //} 
    } 

    protected void pg1button_Click(object sender, EventArgs e) 
    { 
     Session["pg1input"] = txtData1.Text; 
     Session["pg1dd"] = ddlInnoc.SelectedItem; 
     Response.Redirect("/Session/pg2.aspx"); 
    } 

Page 3 Код HTML

  <div class="form-group"> 
       <div class="col-xs-12"> 
        <asp:Label ID="Label1" class="col-md-2 control-label" runat="server" Text="Name:"></asp:Label> 
        <div class="col-md-3 form-control-static"> 
         <%=Session["pg1input"] %> 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-xs-12"> 
        <asp:Label ID="Label2" class="col-md-2 control-label" runat="server" Text="Sex:"></asp:Label> 
        <div class="col-md-3 form-control-static"> 
         <%=Session["pg1dd"] %> 
        </div> 
       </div> 
      </div> 
<div class="row"> 
    <div class="col-sm-offset-4 col-xs-12"> 
      <asp:LinkButton ID="pg1EditButton" runat="server" OnClick="pg1EditButton_Click" CssClass="btn btn-default"> 
       <span aria-hidden="true" class="glyphicon glyphicon-pencil"></span> Edit 
      </asp:LinkButton> 
    </div> 
</div> 

Page 3 Кнопка редактирования кода За

protected void pg1EditButton_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("/Session/pg1.aspx"); 
} 

Я подозреваю, что его что-то делать с кодом позади на моей странице 1, как и все другие поля/кнопки радио на других страницах извлекает и отображает обновленное значение на моей третьей странице.

+0

вы храните обновленное значение в сессии снова? – shreesha

+0

@shreesha Я обновил раздел «1-й код страницы, который отображает выбранное значение» – murday1983

+0

Я вижу вашу переменную сеанса ** Session ["pg2"] **, и вы сохраняете значение в ** Session ["pg1dd "] **. Я не вижу смысла использовать две переменные сеанса для хранения того же значения. Есть ли какие-нибудь? – shreesha

ответ

0

Фикс

if (!IsPostBack) 
{ 
    if (ddlInnoc.SelectedValue != "0" && Session["pg1dd"] != null) 
    { 
      ddlInnoc.SelectedValue = Session["pg1dd"].ToString(); 
    } 
} 
1

Вы возвращаете значение в своем сеансе после обратной передачи.

Добавьте это к своей странице_Load.

if (!IsPostBack) 
{ 
    //set values from session 
} 
+0

Я храню все данные в сеансе. Все мои другие поля и переключатели используют этот бит кода (2-й pg-код) 'if (txtData2.Text == string.Empty && Session [" pg2 "]! = Null) { txtData2.Text = Session [" pg2 "].Нанизывать(); if (Session ["pg2Yes"]. ToString() == "Да") {pg2Yes.Checked = Session ["pg2Yes"]. Equals («Да»); } if (Session ["pg2No"]. ToString() == "Нет") { pg2No.Checked = Session ["pg2No"]. Равно («Нет»); } } ' – murday1983

Смежные вопросы