我已经阅读了一些不同的例子,对于那些不完全了解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() 函数,但是玩这些,仍然没有得到我的价值。