编程语言
首页 > 编程语言> > 选择从JavaScript填充的控件返回空值

选择从JavaScript填充的控件返回空值

作者:互联网

在我的ASP.NET应用程序中,我有一个服务器端HTML select控件.

<select id="CompanyDropDown" runat="server" style="width:330px">
</select>

然后,我的页面上就有一个链接,该链接运行一个JavaScript函数,该函数填充该控件,并选择“当前”项.我看到这是可行的,因为列表包含所有项目,并且选择了正确的项目.

但是,当页面回发以响应按钮单击时.

<asp:Button runat="server" ID="btnSaveCompany" Text="Save" 
    onclick="btnSaveCompany_Click" />

CompanyDropDown.Value为空,并且不包含任何项目.关于如何在回发中看到所选值的任何建议?

(注意:我尝试使用ASP.NET DropDown控件,但是当控件具有在呈现页面后添加的项目时,该操作将失败回发验证.)

解决方法:

由于使用JavaScript添加到列表中的项目不是viewstate的一部分,因此无法在服务器端检索它们.如果仅尝试获取所选值,则在每次更改下拉菜单选择时,在页面上放置服务器端隐藏字段并使用JavaScript设置其值:

jQuery脚本:

$('#CompanyDropDown').change(function() {
    $('#inpSelectValue').val($(this).val());
});

隐藏的字段标记:

<input runat="server" id="inpSelectValue" clientidmode="static" type="hidden" />

隐藏字段的值将在回发时传送到服务器.引用它以检索所选项目的值.请务必在下拉菜单中添加clientidmode =“ static”,以将控件的呈现ID设置为您在ASPX页中分配的ID(即CompanyDropDown而不是parentContainer_CompanyDropDown):

<select id="CompanyDropDown" runat="server" style="width:330px"
    clientidmode="static" />

另外,您可以使用AJAX告诉服务器您要添加每个动态生成的列表项或更改选择.仅当您需要维护除选定项目之外的其他项目列表时,我才会这样做.

标签:select,postback,asp-net,javascript
来源: https://codeday.me/bug/20191102/1991597.html