我知道这可能是一个奇怪的情况,但目前我需要将javascript与服务器端代码混合如下:
function PerformGlobalCallback(sender, value) {
var index = hfCurrentTabIndex.Get("activeIndex"));
window['<%= ((ASPxCallbackPanel)myTabControl.TabPages[index].Controls[0]).ClientInstanceName %>'].PerformCallback(sender + "|" + value);
}
其中hfCurrentTabIndex是一个隐藏字段,它正确保存当前选项卡索引的值。 我知道我不能简单地将“index”变量放在&lt;%=%&gt;中因此我需要想出办法来实现它。
我需要这个的原因是因为myTabControl当前选项卡索引在回调之间以某种方式丢失。此外,即使我将它存储在Session中,当我在上面的代码中访问它时,我得到null。
如果您有任何见解,请与我们联系。感谢您的帮助。
答案 0 :(得分:1)
var clientInstanceNames = [];
<%
for(int x=0; x<myTabControl.TabPages.Count; x++)
{
Response.Write("clientInstanceNames[" + x.ToString() + "] = \"" + (ASPxCallbackPanel)myTabControl.TabPages[x].Controls[0]).ClientInstanceName + "\";");
}
%>
function PerformGlobalCallback(sender, value) {
var index = hfCurrentTabIndex.Get("activeIndex"));
window[clientInstanceNames[index]].PerformCallback(sender + "|" + value);
}
那应该做你想要的。
首先处理服务器端代码,以便在客户端浏览器处理JavaScript之前将页面发送到客户端浏览器。您还可以使用AJAX调用来获取.ClientInstanceName。但上面演示的方式为您构建服务器上的JavaScript数组,因此您的客户端代码只需要查找索引。
注意代码是在我的浏览器窗口中编写的,未经过测试,因此可能存在语法错误。
答案 1 :(得分:0)
是
在使用服务器生成的数据设置javascript时经常完成。
var myjsVariable = "<%= SomeServerSideVariable %>'
但是,你做的方式不会起作用。
这个位是javascript(客户端)
var index = hfCurrentTabIndex.Get("activeIndex");
但是,您尝试在服务器端调用中使用该客户端变量:
<%= ((ASPxCallbackPanel)myTabControl.TabPages[index].Controls[0]).ClientInstanceName %>
-----------------------------------------------^