如何使用带有更新面板的selectedIndexChanged从asp.Net中的DropDownList获取所选值?我试过但是当我将AutoPostBack添加到我的DropDownList时,它会将我发送到一个错误页面,说它无法找到资源。(甚至没有点击我的“selected_IndexChanged”)我给hiddenField分配了所选的值。< / p>
这是我的DropDownList:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:DropDownList runat="server" ID="ddlCaseFilesNew" DataSourceID="dsCaseFiles"
DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" Width="300px"
AutoPostBack="true" OnSelectedIndexChanged="ddlCaseFilesNew_SelectedIndexChanged" Visible="False">
<asp:ListItem>Item 1</asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCaseFilesNew" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
当我点击DropDownList中的一个值时,它会将我发送到“找不到资源”页面。我不知道为什么。它甚至没有触及我的“onSelectedIndexChanged”
<script runat="server">
protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
{
hidNewCaseFile.Value = ddlCaseFilesNew.SelectedItem.Value;
}
</script>
答案 0 :(得分:2)
在SelectedIndex函数中,使用
string sValue = ((DropDownList)sender).SelectedValue;
由于它位于更新面板中,您可能无法通过设计器(this.DdlId)访问它。
根据您在OP中的评论,这可能是您所需要的:
protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
{
hidNewCaseFile.Value = ((DropDownList)sender).SelectedValue;
}
您还需要将隐藏字段移动到ContentTemplate中。
答案 1 :(得分:1)
使用:
protected void myDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
var res = this.myDropDownList.SelectedValue;
}
或者:
protected void myDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
var ddl = sender as DropDownList;
var res = ddl.SelectedValue;
}
您需要了解部分页面呈现适用于UpdatePanel
中的所有控件,在您的情况下,您正尝试设置Value
属性{{ 1}}控件在hidNewCaseFile
内似乎不是因此,其值永远不会更新