当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  静态页中利用AJAX.NET实现无刷新页面(2)

 静态页中利用AJAX.NET实现无刷新页面(2)

点击次数:17 次 发布日期:2008-11-26 13:48:22 作者:源代码网
源代码网推荐      3. 用JavaScript编写脚本方法,
源代码网推荐  
源代码网推荐  function Init()
源代码网推荐  {
源代码网推荐   DomTree=new dhtmlXTreeObject(document.getElementById("divTree"),"100%","100%",0);
源代码网推荐   DomTree.setImagePath("imgs/");
源代码网推荐   DomTree.enableDragAndDrop(true)
源代码网推荐   DomTree.setDragHandler(myDragHandler);
源代码网推荐   DomTree.setOnClickHandler(SelectTreeNode);
源代码网推荐   var s= AjaxData.GetXMLTree().value;
源代码网推荐  
源代码网推荐   DomTree.loadXMLString(s);
源代码网推荐   DomTree.openItem("R_1");
源代码网推荐   SelectTreeNode("R_1");
源代码网推荐   divToolbar.innerHTML=AjaxData.GetToolBarTable(TableName).value;
源代码网推荐   divDataGrid.innerHTML=GetTableOuterHTML(TableName);
源代码网推荐  }
源代码网推荐  
源代码网推荐    Init方法通过Ajax的GetXmlTree方法得到树的内容,GetToolBarTable取得工具栏的内容。通过GetTableOuterHTML方法取得物理表tInfoClass的所有数据并通过表格展现出来。
源代码网推荐  
源代码网推荐  function Find()
源代码网推荐  {
源代码网推荐   var Table=AjaxData.GetXmlFindTable("年级名称 like "%"+txtName.value +"%"");
源代码网推荐   divDataGrid.innerHTML=Table.value;
源代码网推荐  }
源代码网推荐  
源代码网推荐    查询方法Find()是通过Ajax的GetXmlFindTable方法按年级名称查询并把结果展现出来。
源代码网推荐  
源代码网推荐  function OpenAddWeb()
源代码网推荐  {
源代码网推荐   var RetID =OpenAddWin("InfoClass_edit.ASPx?IsAdd=true",370,300);
源代码网推荐   if(RetID==-1) return;
源代码网推荐   InsertRow(DataGrid1,RetID);
源代码网推荐  }
源代码网推荐  
源代码网推荐    OpenAddWeb方法打开InfoClass_edit.aspx页在该页上完成增加数据的功能。如果返回值不为-1则表示有新数据增加的并把数据插入到表格的最后一行。RetID表示最后一行的ID.
源代码网推荐  
源代码网推荐  function OpenEditWeb(ThisCell)
源代码网推荐  {
源代码网推荐   var ID=ThisCell.previousSibling.previousSibling.innerText;
源代码网推荐   var RetID =OpenAddWin("InfoClass_edit.aspx?ID="+ID+"&IsAdd=false",370,300);
源代码网推荐   if(RetID==-1) return;
源代码网推荐   //有更新行
源代码网推荐   var CurrRow=ThisCell.parentElement
源代码网推荐   SetRowText(CurrRow);
源代码网推荐   // SetRowText(CurrRow,RetDataRow);
源代码网推荐  }
源代码网推荐  
源代码网推荐    OpenEditWeb方法是当用户点击的单元格后打开InfoClass_edit.aspx页在该页上完成编辑该行数据的功能。如有更新行则把当前行的内容更换..
源代码网推荐  
源代码网推荐  
源代码网推荐  建立Ajax类。(见文件AjaxData.cs)命名空间为Ttyu,类名为AjaxData。
源代码网推荐  
源代码网推荐    1. 定义静态变量mDt。mDt是读取到物理表的数据并保存在内存中的数据表对象。我们的主要操作都是靠它完成。定义为静态的是我们不希望反复访问数据库。我们一次性读取,永久使用。
源代码网推荐  
源代码网推荐  static public DataTable mDt;
源代码网推荐  
源代码网推荐    2.定义我们的主要方法。在每个方法的上行加上[Ajax.AjaxMethod()]。
源代码网推荐  
源代码网推荐  //得到表TableName的所得数据,以XML字符串返回
源代码网推荐  [Ajax.AjaxMethod()]
源代码网推荐  public string GetTableOuterHTML(string TableName)
源代码网推荐  {
源代码网推荐   DataTable dt=db.DB.GetDataTable(TableName);
源代码网推荐   mDt=dt;
源代码网推荐   return db.GetTableOuterHTML(dt.DefaultView);
源代码网推荐  }
源代码网推荐  
源代码网推荐    GetTableOuterHTML方法是由物理表名读取到内存中并通过其视图得到以XML格式的Table。这里我们读取后保存在mDt中。用数据表的视图是我们的查询也通过该方法呈现数据。
源代码网推荐  
源代码网推荐  //得到表TableName的所得数据,以XML字符串返回
源代码网推荐  [Ajax.AjaxMethod()]
源代码网推荐  public string GetXmlFindTable(string RowFilter)
源代码网推荐  {
源代码网推荐   DataTable Dt=mDt;
源代码网推荐   DataView dv=Dt.DefaultView;
源代码网推荐   dv.RowFilter=RowFilter;
源代码网推荐   return db.GetTableOuterHTML(dv);
源代码网推荐  }
源代码网推荐  
源代码网推荐    GetXmlFindTable是按查询条件从mDt中查询到数据并返回给客户端。
源代码网推荐  
源代码网推荐  //删除行
源代码网推荐  [Ajax.AjaxMethod()]
源代码网推荐  public bool DeleteRow(string TableName,int ID)
源代码网推荐  {
源代码网推荐   string SQL = "delete from " + TableName + " where ID=" + ID;
源代码网推荐   bool isSuccess= db.DB.ExecuteSQL(SQL);
源代码网推荐   if(isSuccess)
源代码网推荐   {
源代码网推荐    DataRow dr=mDt.Select("ID="+ID)[0];
源代码网推荐    mDt.Rows.Remove(dr);
源代码网推荐   }
源代码网推荐   return isSuccess;
源代码网推荐  }
源代码网推荐  
源代码网推荐    DeleteRow是删除物理表的一行,并在mDt中也同步地删除。
源代码网推荐  
源代码网推荐  //把数据行转化为数组返回
源代码网推荐  [Ajax.AjaxMethod()]
源代码网推荐  public object GetDataRow(int iID)
源代码网推荐  {
源代码网推荐   DataRow dr=mDt.Select("ID="+iID)[0];
源代码网推荐   return dr.ItemArray;//数字类型不能为空
源代码网推荐  }
源代码网推荐  GetDataRow是从内存表mDt得到ID号为iID的一行,通过数组方式返回给客户端。
源代码网推荐  [Ajax.AjaxMethod()]
源代码网推荐  public string GetToolBarTable(string TableName)
源代码网推荐  {
源代码网推荐   return db.GetToolBarTable(TableName);
源代码网推荐  }
源代码网推荐  
源代码网推荐    GetToolBarTable是组织成工具栏的内容返回给客户端。
源代码网推荐  
源代码网推荐    ·建立业务数据类ttyuPKData。(见文件ttyuPKData.cs)命名空间为Ttyu,类名为ttyuPKData。
源代码网推荐  
源代码网推荐    该类中有些常用的方法。
源代码网推荐  
源代码网推荐    public bool InsertDataRow(DataRow dr,int BeginColumnIndex)为向物理表中把数据行dr插入,BeginColumnIndex表示从开始的列插入。
源代码网推荐  
源代码网推荐    public bool UpdateDataRow(DataRow dr,int BeginColumnIndex,string Filter) 为向物理表中把数据行dr的数据更新,BeginColumnIndex表示开始更新的列。Filter表示所要更新的行。是一筛选条件。
源代码网推荐  
源代码网推荐    public string GetTableOuterHTML(DataView dv)是个通用的把数据视图展现为Table的方法。并通过class定义样式。
源代码网推荐  
源代码网推荐  //由一个数据视图得到该表的表头及所有数据,以XML格式的表字符串返回
源代码网推荐  public string GetTableOuterHTML(DataView dv)
源代码网推荐  {
源代码网推荐  StringBuilder ret = new StringBuilder();
源代码网推荐  ret.Append("<table class="DataGrid" id="DataGrid1" cellspacing=1 cellpadding=4>" );
源代码网推荐  ret.Append("<tr class="DataGridHeaderStyle">");
源代码网推荐  ret.Append("<td width="5"> <input type="checkbox" onclick="SelectAll(this)"></td> ");
源代码网推荐  //标题
源代码网推荐  foreach(System.Data.DataColumn dc in dv.Table.Columns )
源代码网推荐  {
源代码网推荐  if(dc.Ordinal==0) //该列隐藏
源代码网推荐  ret.Append("<td class="IDColumn">"+dc.ColumnName+"</td>");
源代码网推荐  else
源代码网推荐  ret.Append("<td>"+dc.ColumnName+"</td>");
源代码网推荐  }
源代码网推荐  ret.Append("</tr>");
源代码网推荐  //这时是视图中筛选后的数据
源代码网推荐  foreach(DataRowView drv in dv)
源代码网推荐  {
源代码网推荐  DataRow dr=drv.Row;//dv.Table.Rows[i];
源代码网推荐  ret.Append(GetRowOuterHTML(dr));
源代码网推荐  }
源代码网推荐  ret.Append("</table>");
源代码网推荐  return ret.ToString ();
源代码网推荐  }
源代码网推荐  
源代码网推荐    ·建立页面数据编辑类(见文件PageEdit.cs)命名空间为Ttyu.Web,类名为PageEdit。
源代码网推荐  
源代码网推荐    该类是个通用的通过继承的技巧实现了所有编辑页(包括增加、修改数据)功能的统一处理。页中不需要一行代码。
源代码网推荐  
源代码网推荐    结论
源代码网推荐  
源代码网推荐    Ajax技术可以给客户端提供丰富的客户体验,而ajax.net为您容易的实现这样强大的功能提供了可能。静态页面是不出现刷新问题的。我们的静态页面通过Ajax完全可与ASP.NET结合起来。通过.net进行后台的管理。前台通过Javascript调用。这样完美的结合是解决问题的最佳方法。
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华