Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue?_Asp.net - Fatal编程技术网

Asp.net 当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue?

Asp.net 当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue?,asp.net,Asp.net,当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue 还有一点背景:我有级联下拉列表,我想使用JavaScript填充值,这样当用户更改第一个下拉列表中的选择时,我就可以避免回发 我不允许使用更新面板 我已经建立了一个简单的演示问题。以下是我的标记代码: <p> <asp:DropDownList runat="server" ID="FilterDropDownList" /> </p> &l

当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue

还有一点背景:我有级联下拉列表,我想使用JavaScript填充值,这样当用户更改第一个下拉列表中的选择时,我就可以避免回发

我不允许使用更新面板

我已经建立了一个简单的演示问题。以下是我的标记代码:

<p>
    <asp:DropDownList runat="server" ID="FilterDropDownList" />
</p>
<p>
    <asp:Button runat="server" ID="SearchButton" Text="Search" 
        onclick="SearchButton_Click" /><br/>
    <asp:TextBox runat="server" ID="QueryTextBox" />
</p>
<script type="text/javascript"
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        var filterDropDownListId = '#<%= FilterDropDownList.ClientID %>';

        $(filterDropDownListId).append($('<option>').prop('value', 'Alpha').html('A'));
        $(filterDropDownListId).append($('<option>').prop('value', 'Beta').html('B'));
    });
</script>
问题是FilterDropDownList.SelectedValue为空。我本以为是“阿尔法”或“贝塔”。我可以毫无问题地读取QueryTextBox.Text的值


使用JavaScript填充值后,是否可以读取MyDropDownList.SelectedValue?或者您必须使用不同的方法吗?

您始终可以使用javascript将所选值写入隐藏的文本框,并读取隐藏代码中的值。

您始终可以使用javascript将所选值写入隐藏的文本框,并读取隐藏代码中的值。

但这真的有必要吗?这看起来很奇怪,因为我必须使用RegisterForEventValidation注册可能的值以避免安全错误。我100%同意。这就是为什么我把你的问题作为我的最爱添加进来的原因。:)我想看看是否可能。如果这是一个阻碍你发展的问题,你可以通过实施我的建议来“解决”这个问题,如果你最终从社区得到了满意的答案,那么就回去实施这个问题。我将在几天内不回答这个问题,并希望得到解释。如果没有问题,我相信你的回答是正确的我最终将下拉菜单创建为元素,而没有在其上运行runat=“server”。这样我就不必使用隐藏字段,也不必为验证注册允许的值。老派,但它很好用。所以基本上答案是这是不可能的?奇怪。对我来说又是一个不眠之夜……但这真的有必要吗?这看起来很奇怪,因为我必须使用RegisterForEventValidation注册可能的值以避免安全错误。我100%同意。这就是为什么我把你的问题作为我的最爱添加进来的原因。:)我想看看是否可能。如果这是一个阻碍你发展的问题,你可以通过实施我的建议来“解决”这个问题,如果你最终从社区得到了满意的答案,那么就回去实施这个问题。我将在几天内不回答这个问题,并希望得到解释。如果没有问题,我相信你的回答是正确的我最终将下拉菜单创建为元素,而没有在其上运行runat=“server”。这样我就不必使用隐藏字段,也不必为验证注册允许的值。老派,但它很好用。所以基本上答案是这是不可能的?奇怪。对我来说,又是一个不眠之夜。。。。
protected override void Render(HtmlTextWriter writer)
{
    // Register the allowed values for the down down list.
    Page.ClientScript.RegisterForEventValidation(FilterDropDownList.UniqueID, "Alpha");
    Page.ClientScript.RegisterForEventValidation(FilterDropDownList.UniqueID, "Beta");

    base.Render(writer);
}

protected void SearchButton_Click(object sender, EventArgs e)
{
    Response.Redirect(
        String.Format("{0}?dropdown={1}&query={2}",
            Request.Url.AbsolutePath,
            FilterDropDownList.SelectedValue,
            QueryTextBox.Text));
}