Telerik RadPageView完成加载后调用JavaScript函数?

时间:2015-09-12 01:14:04

标签: javascript c# asp.net webforms telerik

我正在使用Telerik UI for asp.net。具体来说,我使用RadTabStrip和部分页面回发来允许用户标记不同的数据集。当用户单击选项卡时,某些代码会执行并仅为该选项卡加载数据。

我已经弄明白了如何执行代码隐藏:我设置了RadTabStrip的 OnTabClick 属性,然后在代码隐藏中检查点击了哪个标签。

E.g。

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。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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