【问题标题】:ASP.Net My Updated Value From Drop Down List Doesn't Update/DisplayASP.Net 我从下拉列表中更新的值不更新/显示
【发布时间】:2015-10-21 19:03:42
【问题描述】:

我有一个 4 页的 ASP.NET 表单,它在会话中存储数据。我第三页上的一个按钮清除了会话。这一切都很好,但我在更新确认页面上的值时遇到问题,因为它保留/显示了我最初选择的值,我不知道为什么。

带有下拉列表的第一页 HTML

<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");
    }

第 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>

第 3 页编辑后面的按钮代码

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

我怀疑这与我的第 1 页后面的代码有关,因为其他页面上的所有其他字段/单选按钮都会检索并在我的第 3 页上显示更新的值。

【问题讨论】:

  • 您是否再次将更新后的值存储在会话中?
  • @shreesha 我更新了“重新显示所选值的第一页代码”部分
  • 我看到您的会话变量是 Session["pg2"] 并且您将值存储在 Session["pg1dd"] 中。我知道'没有看到使用两个会话变量来存储相同值的任何目的。有吗?
  • @shreesha 抱歉,我添加了错误的 HTML。我现在在 Pg3 HTML 下添加了正确的位

标签: html asp.net webforms


【解决方案1】:

您在回发时将其设置回会话中的值。

将此添加到您的 Page_Load。

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

【讨论】:

  • 我在会话中存储所有数据。我的所有其他字段和单选按钮都使用这段代码(第二个 pg 代码)if (txtData2.Text == string.Empty &amp;&amp; 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"); } }
【解决方案2】:

修复是

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

【讨论】:

    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2016-05-27
    相关资源
    最近更新 更多