[英]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.