我使用的是最新版本的Ajax Control Toolkit v15.1.4.0(2015年12月)
在我们的网站上,我们有一个表单,根据查询字符串中项目的值,我们会将用户带到另一个选项卡。此代码位于代码隐藏文件的page_load中。 代码如下:
tabsHLAAntibodiesResultPage.ActiveTab = tabsHLAAntibodiesResultPage.Tabs[2];
hfCurrentTab.Value = "2";
此代码正常运行,用户将被放置在相应的选项卡上。
我们希望在不同的表单上引入一个新功能,这需要用户被带到测试结果表单然后返回到所进行的测试列表。要让用户重新进行测试,我们必须更改用户在加载表单时通常会登陆的选项卡。
因此,使用与之前相同的逻辑,我们将以下代码添加到表单的page_load中,我们希望用户返回: -
if (Request.Params["From"] != null && Request.Params["From"] == "TestResultPage")
{
tabsPatientDetailsPage.ActiveTab = tabsPatientDetailsPage.Tabs[4];
hfCurrentTab.Value = "4";
}
当用户从测试结果页面返回表单时,我们收到此错误: - 查看scriptresource.axd文件,错误发生在以下块中(特别是._validateParams函数): - `
var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler, autoRemove) {
/// <summary locid="M:J#Sys.UI.DomEvent.addHandler" />
/// <param name="element"></param>
/// <param name="eventName" type="String"></param>
/// <param name="handler" type="Function"></param>
/// <param name="autoRemove" type="Boolean" optional="true"></param>
var e = Function._validateParams(arguments, [
{name: "element"},
{name: "eventName", type: String},
{name: "handler", type: Function},
{name: "autoRemove", type: Boolean, optional: true}
]);
if (e) throw e;`
元素参数为null。事件名是&#34;点击&#34;。
如果基于Request.Params [&#34; From&#34;](如上所述)的代码块被注释掉,表单在第一个选项卡上成功加载,但我们希望它在5日加载!
我浏览了两个表单的代码(使用此技术以编程方式更改活动选项卡),但看不到任何其他可能阻止在新代码中成功更改选项卡的内容。
任何人都可以解决问题所在吗?
答案 0 :(得分:0)
以为我会更新这个以便让任何人知道谁读了它我们找到了一种方法来使用javascript来规避问题。 我们删除了声明:
tabsPatientDetailsPage.ActiveTab = tabsPatientDetailsPage.Tabs[4];
从后面的代码中的Page_Load方法,然后将以下内容添加到javascript pageLoad方法: -
if (hfCurrentTab.value == "4") {
var ctrl = $find('ctl00_ContentPlaceHolder1_tabsPatientDetailsPage');
ctrl.set_activeTab(ctrl.get_tabs()[4]);
}
这不是最优雅的做事方式,但它有效!