【问题标题】:Call JavaScript function after Telerik RadPageView finishes loading?Telerik RadPageView 完成加载后调用 JavaScript 函数?
【发布时间】:2015-12-08 15:31:30
【问题描述】:

我正在为 asp.net 使用 Telerik UI。具体来说,我将 RadTabStrip 与部分页面回发一起使用,以允许用户通过不同的数据集进行选项卡。当用户单击一个选项卡时,一些代码会执行并仅为该选项卡加载数据。

我已经弄清楚如何执行代码隐藏:我设置了 RadTabStrip 的 OnTabClick 属性,然后在代码隐藏中检查单击了哪个选项卡。

例如

protected void tab_Click(object sender, RadTabStripEventArgs e)
        {
            if (e.Tab.Text == "Info")
            {
                populateInfoTab();
            }
        }

private void populateInfotab()
{
    // Do some stuff
}

但是,我无法弄清楚如何在单击特定选项卡之后执行客户端 javascript。我尝试了什么:
设置OnClientTabSelected属性,然后添加一些javascript:

function tab_ClientClick(sender, args)
{
    var tab = args.get_tab();
    if(tab.get_text() == "Info")
    {
        alert("Tab Clicked");
    }
}

问题是我需要在被点击的页面视图中设置一些 div 的 InnerHtml被点击之后。页面加载时 div 不存在(特定的 RadPageView 被隐藏),所以我无法设置它。一旦用户点击进入选项卡,并在页面视图加载后,我需要能够通过 JavaScript 更新 div 的 InnerHtml。

我该怎么做呢?

【问题讨论】:

    标签: javascript c# asp.net webforms telerik


    【解决方案1】:

    第一个选项 - 如果您设置RenderSelectedPageOnly property to true,所有页面视图将在初始加载时呈现,您将能够使用 JS 查找/修改其中的元素。

    第二个选项 - 只需在加载 UC 后立即从服务器设置内容,这通常会使事情变得更简单。

    第三个选项 - 使用客户端事件(由本机 PageRequestManager 类或 RadAjaxManager 提供,取决于您如何设置 AJAX 交互)在收到响应时执行。这里的困难是确定您需要哪个回发。寻找所需的元素并仅在其存在时执行逻辑是您可以选择的最简单的标志。

    第四个选项 - 从将调用您的函数的服务器代码中注册一个脚本,例如:

    populateInfoTab();
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "someKey", "myDesiredFunction()", true);
    

    您可能希望使用 Sys.Application.Load 来确保它在 IScriptControl 初始化之后执行。

    【讨论】:

      猜你喜欢
      • 2013-01-18
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多