Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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 级联ASPXCOMBOX标记以前的框”;“不活跃”;_Asp.net_Devexpress_Client Server_Aspxcombobox - Fatal编程技术网

Asp.net 级联ASPXCOMBOX标记以前的框”;“不活跃”;

Asp.net 级联ASPXCOMBOX标记以前的框”;“不活跃”;,asp.net,devexpress,client-server,aspxcombobox,Asp.net,Devexpress,Client Server,Aspxcombobox,在过去的几天里,我一直在用一些DevExpress aspxcombox解决一个问题。加载页面时,共有5个框。第一个具有可选值,其余的应为“非活动”。当活动框更改值时,它应该触发下一个组合框,让它加载数据并停用上一个框 我们混合使用JavaScript和服务器站点ASP.NET。我们面临的问题是: 当我们将控件标记为客户端禁用(从服务器端)时,我们无法从服务器端获取数据 当我们将控件标记为禁用(从服务器端)时,我们无法从任何一方获取数据 当我们使用Java脚本将控件标记为禁用时,我们从服务器端

在过去的几天里,我一直在用一些DevExpress aspxcombox解决一个问题。加载页面时,共有5个框。第一个具有可选值,其余的应为“非活动”。当活动框更改值时,它应该触发下一个组合框,让它加载数据并停用上一个框

我们混合使用JavaScript和服务器站点ASP.NET。我们面临的问题是:

  • 当我们将控件标记为客户端禁用(从服务器端)时,我们无法从服务器端获取数据
  • 当我们将控件标记为禁用(从服务器端)时,我们无法从任何一方获取数据
  • 当我们使用Java脚本将控件标记为禁用时,我们从服务器端得到与禁用客户端相同的问题
  • 当我们将控件标记为只读时,我们不能从客户端“取消只读”它

我们希望能够将子控件标记为非活动(只读或禁用),然后在堆栈中重新激活它们。。。我们还需要能够清除堆栈(目前正在使用JavaScript,但控件仍处于“活动”状态)。有什么想法吗?

您可以使用AspxComboBox的
客户端事件来执行此操作

对于第一个组合框
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>

..
..
..

您应该使用
ClientEnabled
属性(服务器端)和
SetEnabled
方法(客户端)。不要使用
Enabled
属性,因为您无法在客户端启用
Enabled==false
的编辑器。
正如您所写的,这个解决方案也有问题。 没有源代码很难确定,但您应该在不同的浏览器中使用
ClientEnabled
检查解决方案。
如果它在IE中工作,而在Chrome和FF中不工作,则可能存在以下问题:


甚至这个:

谢谢您提供的信息。。。但我们的部分问题是,当控件被标记为客户端禁用(SetEnabled(false))时,我们无法从服务器端从中获取数据……您在谈论什么样的数据?如果使用AspxCallbackPanel进行回调,则可以从ClientSide传递所需的值(使用ClientSide-combobox方法)作为回调参数。如果您不这样做,您可以使用AspxHiddenField,您可以根据需要在客户端更新它,并在服务器端使用HiddenField值。有关“在服务器端获取数据”的更多信息将帮助我们了解您的确切问题。什么样的数据?那么,数据主要是ID和文本。每个组合框都有一个ID,下一个组合框的加载取决于该ID(子/父样式)。组合框中的文本也是必需的。。。看起来这可能是启用的问题,正如@Filip所提到的。。。我们将从他们的网站上听取devexpress家伙的建议,并在回发之前尝试使用JavaScript启用客户端…嗯。。。。谢谢你的链接。看来这可能是我们的问题。我们混合使用回调和回发,任何时候控件(文本框和组合框)被标记为客户端禁用,我们都不会从服务器端得到任何信息。。。我们主要在Chrome或Firefox中进行测试。。。上面链接之一的建议是在回发之前启用客户端的控件。。。我会调查一下,看看它是否有效。。。谢谢