簡體   English   中英

Telerik RadPageView完成加載后調用JavaScript函數?

[英]Call JavaScript function after Telerik RadPageView finishes loading?

我正在使用Telerik UI for asp.net。 具體來說,我正在使用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。

我該怎么做呢?

第一個選項 - 如果RenderSelectedPageOnly屬性設置為true ,則將在初始加載時呈現所有頁面視圖,並且您將能夠使用JS查找/修改其中的元素。

第二個選項 - 只需在加載UC后立即從服務器設置內容,這通常會使事情變得更簡單。

第三個選項 - 使用客戶端事件(由本機PageRequestManager類或RadAjaxManager提供,具體取決於您設置AJAX交互的方式)在收到響應時執行。 這里的困難是確定你需要的回發。 尋找所需元素並僅執行邏輯(如果存在)是您可以選擇的最簡單的標志。

第四個選項 - 從將調用您的函數的服務器代碼注冊腳本,如:

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

您可能希望使用Sys.Application.Load來確保它在IScriptControl初始化之后執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM