以下で説明する問題は、「ページが読み込まれるたびにコントロールが同じ値を表示する」という一般的な問題とはほぼ正反対であることに注意してください。表現された動作は一般的に望ましくないことを理解しています。
ポストバックでもページ読み込みイベントでデータバインドされているリストボックスがあります。
変更された selectedindex のイベント ハンドラーがヒットすると、コントロールは、既に再度バインドされており、この時点で selectedindex を持っていない場合でも、なんらかの方法でポストされた値を持ちます。
これがどのように可能になるかを知っている人はいますか。
編集:
SelectedIndex が実際にリセットされることを示すために、次の簡単なマークアップを使用してフォームを作成できます。
<label for="textbox1">Original Posted Value: </label>
<asp:TextBox runat="server" ID="textbox1" />
<asp:DropDownList runat="server" ID="dropdown" OnSelectedIndexChanged="dropdown_SelectedIndexChanged" AutoPostBack="true" />
<label for="textbox2">Value at point handler is hit: </label>
<asp:TextBox runat="server" ID="textbox2" />
.cs の次のコードで
protected void Page_Load(object sender, EventArgs e)
{
textbox1.Text = dropdown.SelectedIndex.ToString();
dropdown.DataSource = new string[] { "none", "A", "B", "C" };
dropdown.DataBind();
}
protected void dropdown_SelectedIndexChanged(object sender, EventArgs e)
{
textbox2.Text = dropdown.SelectedIndex.ToString();
}
2 番目のテキスト ボックスの値は常に 0 になることに注意してください。