我在过去几天一直在使用一些DevExpress ASPxComboBox来解决问题。页面加载时,有5个框。第一个具有可选值,其余值应为“非活动”。当活动框改变值时,它应该触发下一个组合框,使其加载数据并停用前一个框。
我们正在混合使用JavaScript和Server Site ASP.NET。我们遇到的问题是:
我们希望能够将子控件标记为非活动状态(只读或禁用),然后在我们向上走时重新激活它们...我们还需要能够清除堆栈(当前是在JavaScript中工作,但控件仍然“活跃”)。有什么想法吗?
答案 0 :(得分:1)
您应该使用ClientEnabled
属性(服务器端)和SetEnabled
方法(客户端)。不要使用Enabled
属性,因为您无法在客户端启用Enabled == false
编辑器。
正如您所写,此解决方案也存在问题。
如果没有来源,很难确定,但您应该在不同的浏览器中使用ClientEnabled
检查解决方案
如果它在IE中有效并且在Chrome和FF中不起作用,则可能存在以下问题:
ASPxComboBox lose value after a postback when the ClientEnabled property is false
ASPxTextBox ClientEnabled="false" loses value after postback
甚至这个:
ASPxTextBox value gets lost if ClientEnabled property is false
答案 1 :(得分:0)
您可以使用AspxComboBox的Client-side Events
来执行此操作。
对于First Comboboxes Init Event
,为所有其他组合框设置Enabled = false
,这使得客户端被禁用(在客户端)。在每个组合框的Clientside SelectedIndexChanged
方法中,您可以根据业务逻辑的需要启用任何组合框。粗略样本如下:
<dxe:ASPxComboBox ID="FirstCombobox" ...... >
<ClientSideEvents Init="function(s, e){SecondComboBox.SetEnabled(false); ... FifthComboBox.SetEnabled(false);}"
SelectedIndexChanged="function(s, e){SecondComboBox.SetEnabled(true); //or whatever your logic is}" >
</dxe:ASPxComboBox>
<dxe:ASPxComboBox ID="SecondComboBox" ClientInstanceName="SecondComboBox" ...... >
</dxe:ASPxComboBox>
..
..
..
<dxe:ASPxComboBox ID="FifthComboBox" ClientInstanceName="FifthComboBox" ...... >
</dxe:ASPxComboBox>