0

我有一个问题,我找不到解决方案。我有一个父页面动态调用默认用户控件(基于父页面上的选定项目组合 X 的 6 个不同的 UC)。在 UC 中,我注入 (registerClientscript) 一个 javascript,它基于组合框控制 UC 内的可见性。所有 UC 都具有相同的组合,但此 UC 中的控件可能会有所不同。

我遇到的问题是,在第一次加载时,JS 生成正确......但是在从父级更改 Combo X 时,我触发了 UC 的部分刷新,这反过来又重新注册了一个新的 JS。

function DefineView(sender, eventArgs) { 
var comboSearch = $find('%%cmbSearchType%%'); 
//cmbSearch Section 
switch (comboSearch.get_selectedItem().get_value()) { 
[[MY CODE HERE]
} 
}

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "SearchVisibilityPPSA",jsFunction.Replace("%%cmbSearchType%%", cmbSearchType.ClientID),true); 

如您所见,我替换了 ClientID,并且在第一次加载页面时,这会像 ctl00_PrincipalPlaceHolder_ctl00_cmbSearchType 一样正确解决,但是当我更改 Combo X 时,它会重新加载用户控件,进而重新加载上面的脚本。在呈现的 HTML 中,COmbo ID 被重命名为 ctl00_PrincipalPlaceHolder_ctl01_cmbSearchType (注意名称从 ct00 到 ct01 的细微变化)在我的调试中,我看到这个 ClientID 包含新 ID,但不知何故它没有被替换在呈现的 html 上重新生成。

我想我的问题是每次调用这个 UC 时如何强制重新渲染 JS?出于某种原因,它总是使用原始渲染的 JS(这就是它第一次工作的原因)

4

1 回答 1

0

我认为这与我在没有分配任何 id 的情况下生成的动态控制有关……通过强制 id 属性,它保持不变……

于 2011-11-23T15:10:15.520 回答