静态页中利用AJAX.NET实现无刷新页面(2)
点击次数:17 次 发布日期:2008-11-26 13:48:22 作者:源代码网
|
源代码网推荐 源代码网推荐 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)。 源代码网推荐 源代码网供稿. |
