私はこれのいくつかの異なる例を読みました、そしてそれはasp.netページのライフサイクルを完全に理解していない人にとっては明らかな初心者の質問のようです、申し訳ありませんがまだ学んでいます。私の修正の試みはどれもうまくいきませんでした。
aspx:
...
<%
for( int j = 0; j < 11; j++)
{
ChildWeightPounds.Items.Add( new ListItem(j.ToString(),j.ToString()));
}
%>
<asp:DropDownList ID="ChildWeightPounds" runat="server" OnSelectedIndexChanged="DropDownListSelected">
<asp:ListItem Value="">-Select-</asp:ListItem>
</asp:DropDownList>
...
<asp:Button ID="InsertButton" runat="server" Text="Submit" OnClick="InsertButton_Click" />
aspx.cs:
protected void InsertButton_Click(object sender, EventArgs e)
{
foreach (Control c in NewPatientForm.Controls)
{
....
if (c is TextBox)
{
TextBox tb = (TextBox)c;
//Expected response:
Response.Write( "field: " + tb.ID + " = " + tb.Text + "<br />");
}
if (c is DropDownList)
{
DropDownList ddl = (DropDownList)c;
//Unexpected response:
//this is not giving me my selected value, but only the top item ("--select--")
Response.Write("field: " + ddl.ID + ", selectedItem: " + ddl.SelectedItem.Value + "<br />");
}
}
}
これがIsPostBack、DataBind()であり、ページのライフサイクルを理解していないという問題であることは明らかです。しかし、意味がないのは、すべてのコントロールを繰り返し処理していることです。テキストボックス、チェックボックス、チェックボックスリストはすべて正常に機能し、フィールドに値を表示します。何らかの理由で、ドロップダウンリストから値が表示されません。
OnSelectedIndexChangedイベントを使用してみましたが、DataBind()関数を使用してみましたが、これらを試してみても、まだ値を取得できていません。