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

本文关键字:调用 JavaScript 函数 加载 Telerik RadPageView | 更新日期: 2023-09-27 18:12:20

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

我已经知道如何执行代码隐藏:我设置了OnTabClick属性的RadTabStrip,然后在代码隐藏我检查什么选项卡被点击。

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。

我该怎么做呢?

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

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

第二个选项 -只需在加载UC时设置来自服务器的内容,这通常会使事情更简单。

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

第四个选项 -从服务器代码中注册一个脚本来调用你的函数,类似于:

populateInfoTab();
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "someKey", "myDesiredFunction()", true);
你可能想要使用Sys.Application.Load来确保它在IScriptControl初始化之后执行。