ASPX代码
1 <% @ Page Language = " C# " %> 2 3 4 5 < script runat ="server" > 6 System.Data.DataView CreateDataSourceByXianhuiMeng() 7 { 8 System.Data.DataTable dt = new System.Data.DataTable(); 9 System.Data.DataRow dr;10 dt.Columns.Add( new System.Data.DataColumn( " id " , typeof (System.Int32)));11 dt.Columns.Add( new System.Data.DataColumn( " 学生姓名 " , typeof (System.String)));12 dt.Columns.Add( new System.Data.DataColumn( " 语文 " , typeof (System.Decimal)));13 dt.Columns.Add( new System.Data.DataColumn( " 数学 " , typeof (System.Decimal)));14 dt.Columns.Add( new System.Data.DataColumn( " 英语 " , typeof (System.Decimal)));15 dt.Columns.Add( new System.Data.DataColumn( " 计算机 " , typeof (System.Decimal)));16 17 for ( int i = 1 ; i < 30 ; i ++ )18 {19 System.Random rd = new System.Random(Environment.TickCount * i); ;20 dr = dt.NewRow();21 dr[ 0 ] = i;22 dr[ 1 ] = " 【孟子E章】 " + i.ToString();23 dr[ 2 ] = System.Math.Round(rd.NextDouble() * 100 , 2 );24 dr[ 3 ] = System.Math.Round(rd.NextDouble() * 100 , 2 );25 dr[ 4 ] = System.Math.Round(rd.NextDouble() * 100 , 2 );26 dr[ 5 ] = System.Math.Round(rd.NextDouble() * 100 , 2 );27 dt.Rows.Add(dr);28 }29 System.Data.DataView dv = new System.Data.DataView(dt);30 return dv;31 }32 33 protected void Page_Load(object sender, EventArgs e)34 {35 if (Request.QueryString[ " id " ] != null )36 {37 Response.ClearContent();38 GridView1.DataSource = CreateDataSourceByXianhuiMeng();39 GridView1.DataBind();40 System.Text.StringBuilder sb = new System.Text.StringBuilder();41 System.IO.StringWriter sw = new System.IO.StringWriter(sb);42 HtmlTextWriter htw = new HtmlTextWriter(sw);43 Literal header = new Literal();44 header.Text = "项目 " + Request.QueryString[ " id " ] + "
" ;45 Header.Controls.Add(header);46 Header.RenderControl(htw);47 GridView1.RenderControl(htw);48 Response.Write( " 这里查询数据,输出结果就可以了。结果: " + sb.ToString());49 Response.End();50 }51 }52 53 // / 添加这个override void VerifyRenderingInServerForm(Control control),是为了避免出现 54 // / 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。 55 // / 的异常 56 public override void VerifyRenderingInServerForm(Control control)57 { }58 59 60 < html xmlns ="http://www.w3.org/1999/xhtml" > 61 < head id ="Head1" runat ="server" > 62 < title > 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现 63 64 < script type ="text/javascript" > 65 function GetData(p) {66 document.getElementById( " d " ).innerHTML = " 正在读取数据…… " ;67 h = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject( " MSXML2.XMLHTTP " );68 h.open( " GET " , ' <%=Request.FilePath %>?id= ' + p.value, true );69 h.onreadystatechange = function () {70 if (h.readyState == 4 ) {71 if (h.status >= 200 && h.status < 300 ) {72 document.getElementById( " d " ).innerHTML = h.responseText;73 }74 else {75 document.getElementById( " d " ).innerHTML = "数据操作错误:
" + h.responseText;76 }77 }78 }79 h.send( null );80 }81 alert( " 这个提示,只出现在第一次打开页面。 " );82 83 84 85 < body > 86 < form id ="form1" runat ="server" > 87 < asp:GridView ID ="GridView1" runat ="server" > 88 < asp:Panel ID ="Header" runat ="server" > 89 < select onchange ="GetData(this)" > 90 < option value ="1" > 项目一 91 < option value ="2" > 项目二 92 93 94 < div id ="d" > 95 96
点击按钮,刷新 GridView 中的数据,而不是这个页面刷新。使用简单的 XMLHttpRequest 就可以直接实现。具体代码如上方所示