У меня есть кнопка сохранения и выпадающий список на странице. Внутри страницы Load, выпадающий список заполняется, если! Page.PostBack (AutoPostBack = false). Итак, при первом загрузке страницы выпадающий список заполняется. У меня также есть метод сохранения, чтобы перейти с кнопкой сохранения. Когда эта кнопка нажата, она должна сделать что-то с выбранным значением выпадающего списка. Моя проблема заключается в том, что выпадающий список не имеет значения (равно null) внутри метода сохранения кнопки. Как вы это исправите?Сохранять значения ddl и выбранное значение между обратными передачами
наценки:
MyClass.aspx
<%@ Page Language="C#" AutoEventWireup="true" Inherits="MyClass" %>
<asp:Content ID="Content3" ContentPlaceHolderID="MainRegion" runat="server">
<div>
<asp:DropDownList ID="myDdl" runat="server" OnSelectedIndexChanged="myDdlChange" ViewStateMode="Enabled" EnableViewState="true" />
</div>
<br />
<div style="min-width: 300px; max-width: 770px;">
<asp:TextBox id="txtBox" runat="server" TextMode="MultiLine" />
</div>
<div class="buttonContainer">
<span >
<asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" />
</span>
</div>
</asp:Content>
Затем в коде сзади:
MyClass.aspx.cs
public class MyClass
{
protected global::System.Web.UI.WebControls.DropDownList myDdl;
protected global::System.Web.UI.WebControls.TextBox txtBox;
protected global::System.Web.UI.WebControls.Button btnSave;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (this.Page.IsPostBack)
Session["selectedID"] = myDdl.SelectedValue; // my attempt to put the selected value from ddl in a session var, to use it later inside the save method but it didn't work
if (!Page.IsPostBack)
{
//create array1 here
myDdl.Items.Clear();
myDdl.Items.AddRange(array1);
Session["selectedID"] = myDdl.SelectedValue;
myDdlChange(null, null);
this.DataBind();
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
//do something based on myDdl.SelectedValue (which shouldn't be null)
}
protected void myDdlChange(object source, EventArgs e)
{
txtBox.Text = myDdl.SelectedValue;
}
}
}
Благодаря Скотти, есть проблема со значением myDdl однако. он не помнит его значение, когда внутри метода сохранения во время обратной передачи. – dear1
Кроме того, если ядро не вызвано myDdlChange, оно никогда не запускается. – dear1
@ dear1 Вы сейчас используете Page_Load? Пожалуйста, разместите обновленный код, как он выглядит точно. – Scotty