在过去的几天里,我一直在和一些DevExpress ASPxComboBoxes一起解决一个问题。当页面加载时,有5个框。第一个有可选择的值,其余的应该是“非活动的”。当活动框更改值时,它应该触发下一个组合框,让它加载数据并关闭前一个框。
我们使用的是JavaScript和服务器站点ASP.NET的混合。我们遇到的问题是:
我们希望能够将子控件标记为非活动(只读或禁用),然后在堆栈上行走时重新激活它们.我们还需要能够清除堆栈(目前正在JavaScript中工作,但控件仍然是“活动的”)。有什么想法吗?
发布于 2012-02-02 01:11:33
您应该使用ClientEnabled
属性(服务器端)和SetEnabled
方法(客户端)。不要使用Enabled
属性,因为在客户端不能启用带有Enabled == false
的编辑器。
正如您所写的,这个解决方案也有问题。没有源代码是很难确定的,但是您应该在不同的浏览器中使用ClientEnabled
检查解决方案。
如果它在IE中工作,而在Chrome和FF中不工作,那么您可能有以下问题:
当ASPxComboBox属性为false时,回发后ClientEnabled将丢失值
ASPxTextBox ClientEnabled="false“在回发后失去价值
甚至这个:
发布于 2012-02-01 10:47:35
您可以使用Client-side Events
of AspxComboBox这样做。
对于第一个组合框Init Event
,为所有其他组合框设置Enabled = false
,这使得它们在客户端禁用。在每个组合框的客户端SelectedIndexChanged
方法中,您可以根据业务逻辑的需要启用任何combobox。粗略样本如下:
<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>
https://stackoverflow.com/questions/9099353
复制