telerik 的控制項實現 ajax 的方式比 asp.net ajax 要簡單些。有如下特點:
1. 不需要拖放很多 update panel, triggers.
只要在現有 webform 的底部加乙個 radajaxmanager, 然後點 "configure ajax manager", 在其中配置更新關係即可。其中可以配置多個更新的設定,每乙個設定是如下結構:
發起控制項(乙個)—— 被更新的控制項(多個)
2. 配置 ajax callback 的方式很簡單,容易理清頁面上控制項的觸發-更新關係。
如1所說,生成的控制項**如下:
當然,要記得在頁面首部放乙個
和 asp.net ajax 類似的,它也有乙個 radajaxmanagerproxy 控制項,用於在 user control 或 content page (master page 的使用場景)中使用。
radajax 的實現原理是通過將 postback 截獲,轉換為 ajax callback 來實現,在得到結果後,僅更新在上述配置中需要更新的那些目標控制項。
因此對於一些預設不自動 postback 的控制項,如果要讓其能夠觸發 ajax callback, 必須設定 ,才能作為觸發控制項使用。比如 checkbox, textbox 等。
常用的除錯手段:如果 ajax callback 出錯,首先想到的是將這個觸發控制項的 enableajax 屬性設為 false, 這樣就恢復了一般的 postback 模式,可以檢視到詳細的錯誤資訊。
1. radajaxpanel: 這個是 asp.net ajax updatepanel 控制項的代替品,自動捕獲其中的 postback 並轉化為 ajax callback.
2. radajaxloadingpanel: 用來顯示一些 loading 的等待資訊。
在伺服器端新增控制項更新設定:
radajaxmanager1.ajaxsettings.addajaxsetting(, );
radajaxmanager1.ajaxsettings.addajaxsetting(, , or null if none);
注意:此方法可以在 page_load 或 page_prerender 中呼叫。不能在 page_init 中呼叫,因為此時 ajaxmanager 還沒被建立。
客戶端用 js **控制 radajaxmanager 更新:
$find("<%= ajaxmanager1.clientid %>").ajaxrequest(arguments);
該函式在伺服器端會觸發 ajaxrequest 事件,可以通過訂閱該事件來處理請求。
ajaxrequestwithtarget(eventtarget, eventarguments) 函式可用來模擬其他控制項傳送 postback 或 ajax callback.
__dopostback(eventtarget, eventarguments)
或$find("<%= ajaxmanager1.clientid %>").ajaxrequestwithtarget(eventtarget, eventarguments);
該函式在伺服器端可通過對應的 event handler 來處理,如 button1_click.
在 usercontrol 中,應該使用 radajaxmanagerproxy 而不是 radajaxmanager 控制項。
但如果需要獲得當前頁面所包含的 radajaxmanager, 則也可以用 radajaxmanager.getcurrent() 來取得。如果不存在則返回 null.
radajaxmanager.getcurrent(page);
例子:複雜些的應用場景:
gridview 中的某些按鈕要求能觸發 ajax callback, 而另一些則保持原有的 postback 行為。
解決辦法:
在 gridview 的 rowcreated 事件中,處理 datarow 的 prerender 事件,在 prerender 事件處理函式中找到需要觸發 ajax callback 的按鈕,用 radajaxmanager.addajaxsetting() 方法動態註冊之。
注意:不要混用 radajaxpanel 和 radajaxmanager. 如果乙個控制項被包含在 radajaxpanel 中,同時又是 radajaxmanager 裡註冊的乙個觸發控制項,則 manager 中的設定不會起作用。
q: 設定要被更新的控制項被換行顯示了?
a: radajaxmanager 對設定的更新目標控制項自動新增 updatepanel, 而該 panel 的預設布局方式是 block. 可以設定成 inline 來阻止其換行,破壞布局。**如下:
radajaxpanel 的目的是為了更新其中的內容,如果要觸發其外部某些控制項的更新,一般最好用 radajaxmanager 來實現。但不用 radajaxmanager 也是可以的。辦法是通過 responsescripts 方法新增客戶端的指令碼去觸發其他控制項的更新。例子如下:
aspx:00
code behind:
protected void page_prerender(object sender, eventargs e)
}public int count
set}
protected void btnincrease_click(object sender, system.eventargs e)
').ajaxrequest();", radajaxpanel2.clientid));
}protected void b***ecrease_click(object sender, system.eventargs e)
').ajaxrequest();", radajaxpanel1.clientid));
}在 usercontrol / content page 裡處理主頁面的 radajaxmanager 的事件(客戶端事件、服務端事件都能訂閱)的例子:
protected void page_load(object sender, eventargs e)
protected void manager_ajaxrequest(object sender, telerik.web.ui.ajaxrequesteventargs e)
dbms output put line使用方法
begin dbms output.put line a end 如果你是再sql plus中,只要再環境中打出 set serveroutput on 就可以了.還有一種方法 就是使用環境中的繫結變數也可以.再環境中定義 variable name varchar2 50 然後把過程新增乙個out...
sp addlinkedserver使用方法
exec sp droplinkedsrvlogin dbvip,null exec sp dropserver dbvip exec sp addlinkedserver server dbvip 被訪問的伺服器別名 srvproduct provider sqloledb datasrc ser...
SQL Server Profiler使用方法
一 sql server profiler使用方法 1 單擊開始 程式 microsoft sql server 2005 效能工具 sql server profiler,如下圖 2 彈出sql server profiler視窗,如下圖 3 在工作視窗內,滑鼠單擊 檔案 新建跟蹤 n 彈出資料庫...