当我在Javascript中禁用它时,ASP.NET Combo Box值似乎发生了变化

时间:2008-12-12 00:49:20

标签: c# javascript asp.net combobox

我有一个表单,用户可以从组合框中选择组件类型,并且根据该组件,他们可能会也可能无法从另一个组合框中选择数据类型。

当用户选择组件类型时,客户端javascript将触发更改并根据需要设置数据类型组合框的值,并在需要时禁用数据类型组合框。这是奇怪的事情:当该表单提交服务器端获取该数据类型组合框的值时,它不是我设置它的内容!

我似乎把它缩小到一行javascript:

document.all("cmbDataType").disabled = true;

如果该行被注释掉,它仍然会根据组件类型设置为正确的值但不会被禁用,并且表单submit会根据客户端选择的值为服务器提供正确的值。

如果该行执行,则尽管用户在该禁用的组合框中看到了正确的值,但返回给服务器的值不正确。

我无法找到有同样问题的其他人,所以我希望这不是一件非常奇怪的事情。浏览器是IE7,webapp是ASP.NET 2.0。谢谢你的期待!

1 个答案:

答案 0 :(得分:2)

发生这种情况的原因是ASP.NET 2.0默认情况下不提交禁用控件的值。 (更确切地说,它不会在回发时更新服务器控件值。)您可以通过在Page_Load事件中添加以下行来覆盖它:

Page.Form.SubmitDisabledControls = true;

或者您可以在表单标记中设置值:

<form id="myForm" runat="server" SubmitDisabledControls="true">
豫ICP备18024241号-1