使用ClientScript.GetCallbackEventReference實現局部刷新是.NET支持的一種前后臺代碼調用的方式;其實實現局部刷新這樣方式有很多種,最經典也常用的莫過于jQuery封裝好的異步調用方法(Ajax, get, getJSON, post),這里就不去多加比較,畢竟都會接觸到。
下面是簡單的例子:
頁面前臺關鍵代碼:
1 //刪除投訴信息 2 function f_DeleteComplaint() { 3 var currentKey = gridManager.GetSelectRowKeyValue(); 4 if (currentKey != null) { 5 if (confirm('<%=Strings.GetString("Sdelete")%>')) { 6 var deleteInfo = "Complaint" + deleteSign + currentKey; 7 <%=ClientScript.GetCallbackEventReference(this, "deleteInfo", "refresh", "")%>; 8 } 9 }10 else {11 alert('<%=Strings.GetString("S1044") %>!');12 }13 }14 function refresh(val) {15 switch(val.toLowerCase()){16 case "complaint":17 gridManager.Refresh(0);18 break;19 }20 }
頁面后臺關鍵代碼:
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class PSWholeSale_PSWholeSaleEdit : System.Web.UI.Page, ICallbackEventHandler{ public string returnValue = "ok"; PRotected char deleteSign = '|'; #region ICallbackEventHandler 成員 public string GetCallbackResult() { return returnValue; } public void RaiseCallbackEvent(string deleteInfo) { string[] deleteInfoArr = deleteInfo.Split(deleteSign); if (deleteInfoArr.Length > 1) { string sql = ""; returnValue = deleteInfoArr[0]; switch (deleteInfoArr[0].ToLower()) { case "complaint": sql = "update PS_Complaint set RecordStatus='Inactive' where ComplaintID=@id"; break; } if (!string.IsNullOrEmpty(sql)) { DataaccessHelper.ExecuteNonQuery(sql, new DbParameterHelper("id", DbType.Int32, deleteInfoArr[1])); } } } #endregion}
新聞熱點
疑難解答