0
ページに保存ボタンとドロップダウンリストがあります。ページの読み込み中に!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;
}
}
}
感謝。ポストバック時にsaveメソッドの内部でその値を覚えていない。 – dear1
また、myDdlChangeが明示的に呼び出されない限り、それは決してトリガーされません。 – dear1
@ dear1現在Page_Loadを使用していますか?更新されたコードを正確に表示してください。 – Scotty