我不明白为什么我无法获得ddl选择值..
ASP代码:
<table>
<tr>
<th> Annee:</th>
<td>
<asp:DropDownList ID="ddlAnnee" runat="server" />
</td>
</tr>
<tr>
<th colspan="2">
<asp:Button ID="btnValidate" runat="server" onclick="btnValidate_Click"
Text="Validate" />
</th>
</tr>
</table>
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindControls();
}
}
public void BindControls()
{
this.ddlAnnee.DataSource = new BLL.ANNEE_MANAGER().List(false, true, null);
this.ddlAnnee.DataTextField = "INTITULE_AN";
this.ddlAnnee.DataValueField = "ID_AN";
this.ddlAnnee.DataBind();
}
protected void btnValidate_Click(object sender, EventArgs e)
{
int Id_an = int.Parse( this.ddlAnnee.SelectedValue);
}
}
}
所以,当我在页面加载和绑定部分放置一个断点时,没关系,ddl正确填充,页面正确显示ddl。当我点击按钮时,我到达btnValidate_Click方法,但是ddl是empy!
我想我已经忘记了......请帮助我!
谢谢..
答案 0 :(得分:1)
不要删除IsPostBack,BindControl方法应该在!IsPostBack条件,否则你永远不会得到选定的值。只需确保没有清除ddlAnnee下拉列表的任何方法。
答案 1 :(得分:0)
删除IsPostBack
检查 - 当您单击按钮时,代码未重新填充下拉列表,因此它为空并且所选值不再存在。
答案 2 :(得分:0)
您必须在新页面加载和回发上绑定网格。
答案 3 :(得分:0)
我认为当你点击按钮然后执行页面加载并且你在点击时或者在执行子动作之后来自ddl的所有数据,所以当执行click事件并且你把bindcontrol()放在ISPOSTBACK要求ddl之下时当页面加载时第一次绑定,所以根据需要更改代码。