Ajax及CallBack技術分享
(2)搜索服務中心ID,傳遞參數訪問DB獲得不同的Dataset,重新綁定到DataGrid
aspx:
<LINK href="../scripts/elecstyle.css" type="text/css" rel="stylesheet">
<script>
function searchRegister(inputControl,context)
{
context.innerHTML="加載中......";
var arg=inputControl.value;
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
}
function ReceiveServerData(result,context)
{
context.innerHTML=result;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
服?中心ID:<asp:TextBox ID="txtEstation" runat="server"></asp:TextBox>
<input type="button" id="btnEstation" value="搜索中心ID" onclick="searchRegister(txtEstation,divEstation)"/>
</td>
</tr>
<tr>
<td>
<span><font color="red">通過異步刷新搜索服務中心ID重新綁定一個新的DataGrid</font></span>
</td>
</tr>
<tr>
<td>
<div id="divEstation">
<asp:DataGrid SkinID="DgList" runat="server" ID="dgrdTest">
<Columns>
<asp:BoundColumn HeaderText="服?中心" DataField="stationname"></asp:BoundColumn>
<asp:BoundColumn HeaderText="服?中心ID" DataField="stationID"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
</div>
</td>
</tr>
</table>
cs:
namespace WebApplication1.Web
{
public partial class ICallBackTest : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler//接口
{
private string _result;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
initDataGrid();
}
}
private void initDataGrid()
{
QueryParameterCollection colparams = new QueryParameterCollection();
colparams.Add("@trantype", "GETESTATION");
DataSet ds = new BLL.CS.csRequest().Save_DS("estationsel_sp", colparams);
this.dgrdTest.DataSource = ds.Tables[0].DefaultView;
this.dgrdTest.DataBind();
}
public void RaiseCallbackEvent(string eventArgument)
{
QueryParameterCollection colparams = new QueryParameterCollection();
colparams.Add("@trantype", "SEARCH");
colparams.Add("@stationid", eventArgument);
DataSet ds = new BLL.CS.csRequest().Save_DS("estationsel_sp", colparams);
this.dgrdTest.DataSource = ds.Tables[0].DefaultView;
this.dgrdTest.DataBind();
System.IO.TextWriter tempWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(tempWriter);
dgrdTest.RenderControl(htmlWriter);
string _html = tempWriter.ToString();
if (ds.Tables[0].Rows.Count > 0)
{
_result = _html;
}
else
{
_result = "<font color='red'><b>從服務器端返回內容為空</b><font>";
}
}
public string GetCallbackResult()
{
return _result;
}
}
心得:
相同點:兩者的性能,代碼量,工作強度基本相等
不同點:Ajax需引用Ajax.dll,在Web.config進行配置.并在Page_Load進行注冊,函數名前加固定的 [Ajax.AjaxMethod]配置,函數名自定;使用者相對較大。
CallBack可以繼承.net自帶的 System.Web.UI.ICallbackEventHandler接口,函數名固定為:RaiseCallbackEvent(string eventArgument); GetCallbackResult()結構
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示