【问题标题】:How do I get DropDownList selected value from user in Asp.Net(selectedIndexChange)如何从 Asp.Net(selectedIndexChange)中的用户获取 DropDownList 选定值
【发布时间】:2012-10-02 03:42:08
【问题描述】:

如何使用 selectedIndexChanged 和更新面板从 asp.Net 中的 DropDownList 中获取所选值?我已经尝试过,但是当我将 AutoPostBack 添加到我的 DropDownList 时,它会将我发送到一个错误页面,说它找不到资源。(甚至没有点击我的“selected_IndexChanged”)我已经为 hiddenField 分配了选定的值。

这是我的下拉列表:

<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>

【问题讨论】:

  • hiddenField.Value = dropdownlist.SelectedItem.ToString() ?

标签: javascript asp.net


【解决方案1】:

在您的 SelectedIndex 函数中,使用

string sValue = ((DropDownList)sender).SelectedValue;

由于它位于更新面板中,您可能无法通过设计器 (this.DdlId) 访问它。

根据您在 OP 中的评论,这可能是您需要的:

protected void ddlCaseFilesNew_SelectedIndexChanged(object sender, EventArgs e)
{
    hidNewCaseFile.Value = ((DropDownList)sender).SelectedValue;
}

您还需要将隐藏字段移动到 ContentTemplate 中。

【讨论】:

    【解决方案2】:

    用途:

    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;
    }
    

    编辑 1

    您需要了解部分页面呈现发生在UpdatePanel 内的所有控件,在您的情况下,您尝试设置hidNewCaseFile 控件的Value 属性似乎没有UpdatePanel,因此,它的值永远不会更新

    【讨论】:

    • 打败我,但上面的例子不太可能适用于 OP,因为它在更新面板中。
    • 没关系,UpdatePanel 控件用于在服务器来回发送部分异步回发。您的服务器代码将照常工作,这就是 UpdatePanel 的目的
    • 如果它在 UpdatePanel 中,它不是页面的控件,它是属于 UpdatePanel 的控件。
    • 然后呢?这甚至与问题无关。如果我们谈论的是数据绑定控件,那将是相关的。我有礼貌地邀请您尝试一下,您可以通过它们的页面 ID 访问 UpdatePanelPanelPlaceHolder 中的控件
    • 我不知道。我至少有 5 年没有使用过 AJAX.NET,但感谢您提供的信息。
    猜你喜欢
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多