RegisterStartupScript在用户控制不重载/重写Javascript



UPDATE

问题总结:

  1. 有6个动态UCs生成,每个都有自己的自定义JS,使用RegisterStartUpScript在UC

  2. 的Page Init上注入
  3. 只有第一次生成第一个UC的父页面才会将脚本正确地放置在页面的底部。

  4. 在随后的部分更新(AJAX调用)中生成新的UC,不注入相关的脚本…

我将继续寻找和尝试不同的东西,但如果有人能指导我,这将是非常感激的谢谢!

以下是完整的解释

我有一个使用Master的父页面,其中定义了RadScriptManager (telerik的脚本管理器)。父页面有一个占位符,用于生成动态用户控件。UC有一个javascript,我在UC的Page_Init上注入。

当我第一次调用它时,第一个页面加载,脚本工作正常。我可以在Chrome调试器的源代码上看到它。当我更改父对象上的ddl时,它将调用并在占位符内生成另一个UC。后者有自己的Javascript注入类似于第一个生成…这两个UC基本上是每个省的视图,所以它有相同的结构,但形式内容略有不同…

问题是,当我查看Chrome调试器时,我看到了用户控件内容的部分更新,但我没有看到应该添加到UC的Page_Init上的add_load的第二个控件的新脚本。所以每次,我改变控制,它调用前一个脚本…尽管我的代码经过了下面的部分…这基本上是为正在加载的给定控件注册适当的脚本。

在下面的例子中,我总是看到一个警告"SK cmbSearch = ..",而不是"ON cmbSearch = ..",这是我试图加载的当前省份。

谁能给我点建议?
public void RegisterSearchVisibilityPPSA()
{
string jsFunction =
@"function DefineView(sender, eventArgs) {
    var comboSearch = $find('%%cmbSearchType%%');
    //cmbSearch Section
    alert('ON cmbSearch = %%cmbSearchType%% with value = ' + comboSearch.get_selectedItem().get_value() );
    switch (comboSearch.get_selectedItem().get_value()) {
        //PER 
        case 'IN':
        case 'IS' :
            $('#tblPersonSearchForm').show();
            $('#tblPersonDOBSearchForm').show();
            $('#tblBusinessSearchForm').hide();
            $('#tblSerialNumberedSearchForm').hide();
            break;
        //BUS 
        case 'BD':
            $('#tblPersonSearchForm').hide();
            $('#tblPersonDOBSearchForm').hide();
            $('#tblBusinessSearchForm').show();
            $('#tblSerialNumberedSearchForm').hide();
            break;
        //SER 
        case 'MVE':
        case 'MVS':
            $('#tblPersonSearchForm').hide();
            $('#tblPersonDOBSearchForm').hide();
            $('#tblBusinessSearchForm').hide();
            $('#tblSerialNumberedSearchForm').show();
            break;
        //REG 
        case 'REG':
        default:
            $('#tblPersonSearchForm').hide();
            $('#tblPersonDOBSearchForm').hide();
            $('#tblBusinessSearchForm').hide();
            $('#tblSerialNumberedSearchForm').hide();
            $('#tblRegistrationNumberedSearchForm').show();
            break;
    }

}
function onPageLoad(){
    // jquery Area
    $(document).ready(function () {
        DefineView();
    });
}
";

RadScriptManager.RegisterStartupScript(this, this.GetType(), "ON_SearchVisibilityPPSA",jsFunction.Replace("%%cmbSearchType%%", cmbSearchType.ClientID), cmbRegistrationType.ClientID), true);
string onLoadScript = @" Sys.Application.add_load(function(){ onPageLoad();}) ";
RadScriptManager.RegisterStartupScript(this, this.GetType(), "ON_onLoadScript", onLoadScript, true);
}

对于Ajax请求,我认为您应该使用radajaxpanel . responsesscripts . add (script).

相关内容

  • 没有找到相关文章

最新更新