ASP.NET異步回調(diào)開發(fā)實例淺析
ASP.NET異步回調(diào)開發(fā)實例淺析
ASP.NET異步回調(diào)的重要性:在實際開發(fā)中,ASP.NET 客戶端異步回調(diào)技術(shù)才是王道。下面我們進行 ASP.NET 開發(fā)重構(gòu)以實現(xiàn)異步回調(diào)。
之前的HTML代碼示例中,onclick事件寫在了HTML中,現(xiàn)在從中移出至外部的JS。
- ﹤label﹥用戶名﹤/label﹥
- ﹤span﹥username value﹤/span﹥
- ﹤a href="#" id="divElem"﹥查看﹤/a﹥
- 在JavaScript代碼中給ajaxread方法加入了onclick事件處理:
- var divElem = document.getElementById('divElem');
- var span = document.getElementsByTagName('span');
- divElem.onclick = function()
- {
- span[0].innerHTML = result;
- return false;
- }
其中 result 是這個方法的傳值參數(shù)。
另外,還定義了一個處理回調(diào)時出錯的方法:
- function CallbackError(result)
- {
- alert(result);
- }
下面是ASP.NET異步回調(diào)之服務(wù)端程序的示例部分:
- public partial class _Default : Page,
- ICallbackEventHandler
- {
- public void RaiseCallbackEvent(string result)
- {
- }
- public string GetCallbackResult()
- {
- string username = usernameValue;
- return username;
- }
- protected void Page_Load(object sender,
- EventArgs e)
- {
- string callback =
- Page.ClientScript.GetCallbackEventReference(
- this, null, "ajaxread", null, "CallbackError", true);
- Page.ClientScript.RegisterStartupScript(
- this.GetType(), "_Default", callback, true);
- }
- }
其中 usernameValue 是數(shù)據(jù)處理的變量,具體實現(xiàn)代碼略。
程序編譯后,運行結(jié)果與之前用異步回傳是一致的,但代碼重構(gòu)改為異步回調(diào)后,無論是程序可讀性,還是代碼精簡度,都提升了不少。
我通過Firebug觀察到客戶端代碼中的數(shù)據(jù)交互處理是文本(Text)而不是XML,這是 ASP.NET 默認的異步回調(diào)數(shù)據(jù)處理的方式吧。
在ASP.NET 服務(wù)端控件中就帶有Ajax特性的功能了,如 GridView 內(nèi)帶了利用異步回調(diào)技術(shù)的分頁功能,這樣可以少寫了一些代碼量。
在 GridView 的屬性中設(shè)置:AllowPaging="true" EnableSortingAndPagingCallbacks="true"。數(shù)據(jù)綁定在 Page_Load事件和GridView控件的OnPageIndexChanging事件中調(diào)用。這樣的分頁是Ajax的異步回調(diào)的了。
下面是個實際運用中簡單的實例:根據(jù)下拉列表所選中項點擊“查看”按鈕后,顯示相應(yīng)的數(shù)據(jù)。默認顯示所有的數(shù)據(jù)。
ASP.NET異步回調(diào)在程序中設(shè)計了兩個Gridview,一個顯示默認的所有數(shù)據(jù)、另一個顯示查詢后的數(shù)據(jù):
- ﹤span﹥按文章分類名稱:﹤/span﹥
- ﹤asp:DropDownList ID="ArticleTypeDD" runat="server"﹥
- ﹤/asp:DropDownList﹥
- ﹤asp:Button ID="SearchLB"
- OnClick="SearchLB_Click" Text="查看"
- runat="server" /﹥
- ﹤asp:GridView ID="grdArticles"
- AllowPaging="true" PageSize="15"
- EnableSortingAndPagingCallbacks="true"
- OnPageIndexChanging="grdArticles_PageIndexChanging"
- runat="server" /﹥
- ﹤asp:GridView ID="grdArticlesInType" AllowPaging="true"
- PageSize="15" EnableSortingAndPagingCallbacks="true"
- OnPageIndexChanging="grdArticlesInType_PageIndexChanging"
- runat="server" /﹥
ASP.NET異步回調(diào)之cs代碼部分:
- protected void Page_Load(object sender, EventArgs e)
- {
- grdArticles.DataSource = BindData();
- grdArticles.DataBind();
- grdArticlesInType.DataSource = BindData1();
- grdArticlesInType.DataBind();
- }
- protected void Page_PreRender(object sender,
- EventArgs e)
- {
- if (!IsPostBack)
- {
- ArticleTypeDD.DataSource = ArticleAccess.GetArticleTypeName();
- ArticleTypeDD.DataTextField = "ArticleTypeName";
- ArticleTypeDD.DataValueField = "ArticleTypeId";
- ArticleTypeDD.DataBind();
- }
- }
- protected void grdArticles_PageIndexChanging(
- object sender, GridViewPageEventArgs e)
- {
- grdArticles.PageIndex = e.NewPageIndex;
- grdArticles.DataSource = BindData();
- grdArticles.DataBind();
- }
- protected void grdArticlesInType_PageIndexChanging(
- object sender, GridViewPageEventArgs e)
- {
- grdArticlesInType.PageIndex = e.NewPageIndex;
- grdArticlesInType.DataSource = BindData1();
- grdArticlesInType.DataBind();
- }
- protected void SearchLB_Click(object sender,
- EventArgs e)
- {
- grdArticles.Visible = false;
- grdArticlesInType.Visible = true;
- grdArticlesInType.DataSource = BindData1();
- grdArticlesInType.DataBind();
- }
在這里,BindData()方法、BindData1()方法分別返回兩個GridView控件的數(shù)據(jù)綁定的DataTable對象實例。方法具體代碼略過。分頁運行結(jié)果是默認的分頁界面。
ASP.NET異步回調(diào)的基本內(nèi)容就向你介紹到這里希望對你了解和學(xué)習(xí)ASP.NET異步回調(diào)有所幫助。
【編輯推薦】