2013-03-22 59 views
0

我有一个控制与一个updatepanel内的连接到一个计时器的列表框,该计时器在主窗体上使用脚本管理器执行autopostback。使用JavaScript访问子页面控件(asp.net)

为了保持整个回发中选择的项目我使用下面的JavaScript。我已经对此进行了相当深入的研究,并且不相信有另一种方法可以在回传之间选择所选项目。然而,这个解决方案似乎工作得很好。

我的问题是,当我将第二个控件添加到主窗体时,它不起作用。

我试图移动的JavaScript进入的主要形式,但是我不能利用的主要形式访问子控件:

document.getElementById('<%=PositionsControl.FindControl("ListBox_Candidates").ClientID %>').selectedIndex 

我自己也尝试重命名BeginRequestHandler和EndRequestHandler独特的名称(以避免冲突当这个脚本在两个控件上)并且它不起作用。

任何帮助,非常感谢。

<script type="text/javascript"> 
    var index 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_beginRequest(BeginRequestHandler); 
    prm.add_endRequest(EndRequestHandler); 

    function BeginRequestHandler(sender, args) { 
     index = document.getElementById('<%=ListBox_Candidates.ClientID %>').selectedIndex; 
    } 

    function EndRequestHandler(sender, args) { 
     $get('<%=ListBox_Candidates.ClientID %>').selectedIndex = index; 
    } 
</script> 

回答

0

最终没有使用微软的Ajax,而是从jquery调用webmethods!

0

您可以尝试在代码后面添加属性,这将返回您需要的值。 然后,在客户端,只需绑定到此属性。

+0

对不起,我不明白你能解释一下你的意思,请问哪个属性? – Jamesla 2013-03-22 08:39:03

+0

在代码行为(c#?)添加属性,这将公开您需要的值(selectedIndex)。在JavaScript中,绑定到它的控制值。像<÷= MyServerProperty - > – evgenyl 2013-03-22 11:24:16

+0

控件当前绑定正确。绑定控件没有问题。当我在同一页面上有两个这样的脚本时(注册2个beginRequest事件处理程序),就会出现问题。 – Jamesla 2013-03-22 22:56:39