关于上一篇,《以较少代码实现DataGrid的排序,翻页,删除等功能》具体实现的其他辅助代码在这儿,本篇的代码全是多个页面公用代码。
页面代码中,添加,删除,编辑这些按钮,以及DataGrid中的属性设置等HTML代码都去哪儿了呢?
DataGrid控件属性,提交按钮属性,删除按钮属性放到主题中去了。
下面是主题文件:Default.skin -- 页面中,通过styleSheetTheme="Default"来设置主题。
而添加,删除,编辑按钮的HTML放到母版中了。
下面是母版ListMaster.master的代码:
至于脚本Add(),Edit(frm)这里就不描述了。
还有,DataGrid中的排序,翻页,行设置哪儿去了?
放到了基类中了。
下面是基类的代码:
基类里,有几个函数是允许被覆盖的。
GetDataView():取得DataGrid的数据源。
InitialDataGridControl属性:当前页面中的DataGrid。
ItemDataBoundSet(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e, DataRowView drv):根据不同的情景,设置DataGrid的行显示格式。
页面代码中,添加,删除,编辑这些按钮,以及DataGrid中的属性设置等HTML代码都去哪儿了呢?
DataGrid控件属性,提交按钮属性,删除按钮属性放到主题中去了。
下面是主题文件:Default.skin -- 页面中,通过styleSheetTheme="Default"来设置主题。
<%--
列表页面中的DataGrid
--%>
< asp:datagrid SkinID = " dgdList " BorderWidth = " 1px " PageSize = " 20 " Width = " 98% " BorderColor = " #0083B9 " HorizontalAlign = " Center " BorderStyle = " Ridge "
CssClass = " tableGrid " AutoGenerateColumns = " False " runat = " server " AllowSorting = " True " AllowPaging = " True "
GridLines = " Horizontal " SelectedItemStyle - Wrap = " false " SelectedItemStyle - CssClass = " gridSelectedItem "
EditItemStyle - CssClass = " gridEditItem " EditItemStyle - Wrap = " false "
AlternatingItemStyle - CssClass = " gridAltItem " AlternatingItemStyle - Wrap = " false "
ItemStyle - CssClass = " gridItem " ItemStyle - Wrap = " false "
HeaderStyle - CssClass = " gridHeader " HeaderStyle - Wrap = " false "
FooterStyle - CssClass = " gridFooter " FooterStyle - Wrap = " false "
PagerStyle - VerticalAlign = " middle " PagerStyle - NextPageText = " 下一页 "
PagerStyle - PrevPageText = " 上一页 " PagerStyle - HorizontalAlign = " Left " />
<%-- 提交按钮 --%>
< asp:Button runat = " server " Text = " 提 交 " SkinID = " Submit " />
<%-- 删除按钮 --%>
< asp:Button runat = " server " Text = " 删除 " SkinID = " Delete " />
< asp:datagrid SkinID = " dgdList " BorderWidth = " 1px " PageSize = " 20 " Width = " 98% " BorderColor = " #0083B9 " HorizontalAlign = " Center " BorderStyle = " Ridge "
CssClass = " tableGrid " AutoGenerateColumns = " False " runat = " server " AllowSorting = " True " AllowPaging = " True "
GridLines = " Horizontal " SelectedItemStyle - Wrap = " false " SelectedItemStyle - CssClass = " gridSelectedItem "
EditItemStyle - CssClass = " gridEditItem " EditItemStyle - Wrap = " false "
AlternatingItemStyle - CssClass = " gridAltItem " AlternatingItemStyle - Wrap = " false "
ItemStyle - CssClass = " gridItem " ItemStyle - Wrap = " false "
HeaderStyle - CssClass = " gridHeader " HeaderStyle - Wrap = " false "
FooterStyle - CssClass = " gridFooter " FooterStyle - Wrap = " false "
PagerStyle - VerticalAlign = " middle " PagerStyle - NextPageText = " 下一页 "
PagerStyle - PrevPageText = " 上一页 " PagerStyle - HorizontalAlign = " Left " />
<%-- 提交按钮 --%>
< asp:Button runat = " server " Text = " 提 交 " SkinID = " Submit " />
<%-- 删除按钮 --%>
< asp:Button runat = " server " Text = " 删除 " SkinID = " Delete " />
而添加,删除,编辑按钮的HTML放到母版中了。
下面是母版ListMaster.master的代码:
<%
@ Master Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
ListMaster.master.cs
"
Inherits
=
"
Master_ListMaster
"
%>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > 无标题页 </ title >
< script >
// 添加
// 作者:天志
// 创建日期:2007-9-15
function Add()
{
window.location = GetTableName() + " _Add.aspx " ;
}
// 编辑
// 作者:天志
// 创建日期:2007-9-15
function Edit(frm)
{
var ret = checkSelect(frm);
if (ret == false )
{
return false ;
}
window.location = GetTableName() + " _Edit.aspx? " + GetQuery();
}
// 列表编辑
// 作者:天志
// 创建日期:2007-9-15
function EditList()
{
window.open(GetTableName() + " _EditList.aspx " );
}
// 删除
// 作者:天志
// 创建日期:2007-9-15
function Delete(frm)
{
var ret = checkDelete(frm);
if (ret == false )
{
return false ;
}
}
// 查看
// 作者:天志
// 创建日期:2007-9-15
function View(frm)
{
var ret = checkSelect(frm);
if (ret == false )
{
return false ;
}
window.open(GetTableName() + " _View.aspx? " + GetQuery());
}
// 查询
// 作者:天志
// 创建日期:2007-9-15
function Query()
{
window.location = GetTableName() + " _Query.aspx " ;
}
// 导出
// 作者:天志
// 创建日期:2007-9-15
function Export()
{
window.open( " http://www.cnblogs.com/Import/Export.aspx?tablename= " + GetTableName());
}
</ script >
</ head >
< body >
< form id = " form1 " runat = " server " >
< table class = " MenuTable " >
< tr >
< td >
</ td >
< td class = " MenuTDAdd " >
< input onclick = " return Add() " type = " button " value = " 添 加 " >
</ td >
< td class = " MenuTDEdit " >
< input onclick = " return Edit(this.form) " type = " button " value = " 编 辑 " >
</ td >
< td class = " MenuTDEdit " >
< input onclick = " return EditList() " type = " button " value = " 列表编辑 " >
</ td >
< td class = " MenuTDDelete " >
< asp:Button ID = " btnDel " runat = " server " SkinID = " Delete " OnClick = " btnDel_Click " OnClientClick = " return Delete(this.form) " />
</ td >
< td class = " MenuTDView " >
< input onclick = " return View(this.form) " type = " button " value = " 查 看 " >
</ td >
< td class = " MenuTDQuery " >
< input onclick = " return Query() " type = " button " value = " 查询 " >
</ td >
< td class = " MenuTDExport " >
< input onclick = " return Export() " type = " button " value = " 导 出 " >
</ td >
< td class = " MenuRightTD " >
</ td >
</ tr >
</ table >
< br >
< div >
< asp:ContentPlaceHolder ID = " DefaultContent " runat = " server " >
</ asp:ContentPlaceHolder >
</ div >
</ form >
</ body >
</ html >
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > 无标题页 </ title >
< script >
// 添加
// 作者:天志
// 创建日期:2007-9-15
function Add()
{
window.location = GetTableName() + " _Add.aspx " ;
}
// 编辑
// 作者:天志
// 创建日期:2007-9-15
function Edit(frm)
{
var ret = checkSelect(frm);
if (ret == false )
{
return false ;
}
window.location = GetTableName() + " _Edit.aspx? " + GetQuery();
}
// 列表编辑
// 作者:天志
// 创建日期:2007-9-15
function EditList()
{
window.open(GetTableName() + " _EditList.aspx " );
}
// 删除
// 作者:天志
// 创建日期:2007-9-15
function Delete(frm)
{
var ret = checkDelete(frm);
if (ret == false )
{
return false ;
}
}
// 查看
// 作者:天志
// 创建日期:2007-9-15
function View(frm)
{
var ret = checkSelect(frm);
if (ret == false )
{
return false ;
}
window.open(GetTableName() + " _View.aspx? " + GetQuery());
}
// 查询
// 作者:天志
// 创建日期:2007-9-15
function Query()
{
window.location = GetTableName() + " _Query.aspx " ;
}
// 导出
// 作者:天志
// 创建日期:2007-9-15
function Export()
{
window.open( " http://www.cnblogs.com/Import/Export.aspx?tablename= " + GetTableName());
}
</ script >
</ head >
< body >
< form id = " form1 " runat = " server " >
< table class = " MenuTable " >
< tr >
< td >
</ td >
< td class = " MenuTDAdd " >
< input onclick = " return Add() " type = " button " value = " 添 加 " >
</ td >
< td class = " MenuTDEdit " >
< input onclick = " return Edit(this.form) " type = " button " value = " 编 辑 " >
</ td >
< td class = " MenuTDEdit " >
< input onclick = " return EditList() " type = " button " value = " 列表编辑 " >
</ td >
< td class = " MenuTDDelete " >
< asp:Button ID = " btnDel " runat = " server " SkinID = " Delete " OnClick = " btnDel_Click " OnClientClick = " return Delete(this.form) " />
</ td >
< td class = " MenuTDView " >
< input onclick = " return View(this.form) " type = " button " value = " 查 看 " >
</ td >
< td class = " MenuTDQuery " >
< input onclick = " return Query() " type = " button " value = " 查询 " >
</ td >
< td class = " MenuTDExport " >
< input onclick = " return Export() " type = " button " value = " 导 出 " >
</ td >
< td class = " MenuRightTD " >
</ td >
</ tr >
</ table >
< br >
< div >
< asp:ContentPlaceHolder ID = " DefaultContent " runat = " server " >
</ asp:ContentPlaceHolder >
</ div >
</ form >
</ body >
</ html >
至于脚本Add(),Edit(frm)这里就不描述了。
还有,DataGrid中的排序,翻页,行设置哪儿去了?
放到了基类中了。
下面是基类的代码:
///
<copyright>
天志(六子) 1999-2007
</copyright>
/// <version> 1.0 </version>
/// <author> 天志 </author>
/// <email> Xumingxsh21@126.com </email>
/// <log date="2007-11-26"> 创建 </log>
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.UI;
/// <summary>
/// 列表页面基类
/// </summary>
public class BaseListPage : System.Web.UI.Page
{
protected BaseListPage ()
: base ()
{
}
/// <summary>
/// Description:覆盖基类。
/// </summary>
/// <param name="e"></param>
/// <author> Xuming </author>
/// <log date="2007-12-11"> 创建 </log>
protected override void OnInit(EventArgs e)
{
// 设置DataGrid的排序,分页事件
if (InitialDataGridControl != null )
{
this .InitialDataGrid(InitialDataGridControl);
}
base .OnInit(e);
}
/// <summary>
/// 设置DataGrid控件的分页,排序事件。
/// </summary>
/// <param name="dgdList"></param>
protected void InitialDataGrid(DataGrid dgdList)
{
dgdList.PageIndexChanged += new DataGridPageChangedEventHandler(DataGrid_PageIndexChanged);
dgdList.ItemCreated += new DataGridItemEventHandler(DataGrid_ItemCreated);
dgdList.SortCommand += new DataGridSortCommandEventHandler(DataGrid_SortCommand);
dgdList.ItemDataBound += new DataGridItemEventHandler(DataGrid_ItemDataBound);
}
/// <summary>
/// 设置事件的DataGrid。
/// </summary>
protected virtual DataGrid InitialDataGridControl
{
get
{
return null ;
}
}
/// <summary>
/// 分页。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected virtual void DataGrid_PageIndexChanged( object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
}
/// <summary>
/// 添加表头的排序标识。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected virtual void DataGrid_ItemCreated( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
}
/// <summary>
/// 排序。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected virtual void DataGrid_SortCommand( object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
}
/// <summary>
/// 设置行格式。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected void DataGrid_ItemDataBound( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// 获取每行的数据
DataRowView drv = (DataRowView)e.Item.DataItem;
this .ItemDataBoundSet(sender, e, drv);
}
}
/// <summary>
/// 设置普通行的格式。
/// </summary>
/// <param name="sender"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <param name="drv"> 行数据 </param>
protected virtual void ItemDataBoundSet( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e, DataRowView drv)
{
}
/// <summary>
/// 取得DataGrid的数据源。
/// </summary>
/// <returns> 数据源 </returns>
/// <author> 天志 </author>
/// <log date="2007-11-13"> 创建 </log>
protected virtual DataView GetDataView()
{
throw new Exception( " 没有重写基类中的“GetData()”函数,所以无法设置DataGrid的数据源。 " );
}
/// <summary>
/// 添加DataGrid的数据源。
/// </summary>
/// <param name="dgdList"> DataGrid控件 </param>
/// <param name="refresh"> 是否重新读取数据源 </param>
/// <param name="sortExpression"> 排序字段 </param>
/// <author> 天志 </author>
/// <log date="2007-11-13"> 创建 </log>
private void BindDataGrid(DataGrid dgdList, bool refresh, string sortExpression)
{
}
}
/// <version> 1.0 </version>
/// <author> 天志 </author>
/// <email> Xumingxsh21@126.com </email>
/// <log date="2007-11-26"> 创建 </log>
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.UI;
/// <summary>
/// 列表页面基类
/// </summary>
public class BaseListPage : System.Web.UI.Page
{
protected BaseListPage ()
: base ()
{
}
/// <summary>
/// Description:覆盖基类。
/// </summary>
/// <param name="e"></param>
/// <author> Xuming </author>
/// <log date="2007-12-11"> 创建 </log>
protected override void OnInit(EventArgs e)
{
// 设置DataGrid的排序,分页事件
if (InitialDataGridControl != null )
{
this .InitialDataGrid(InitialDataGridControl);
}
base .OnInit(e);
}
/// <summary>
/// 设置DataGrid控件的分页,排序事件。
/// </summary>
/// <param name="dgdList"></param>
protected void InitialDataGrid(DataGrid dgdList)
{
dgdList.PageIndexChanged += new DataGridPageChangedEventHandler(DataGrid_PageIndexChanged);
dgdList.ItemCreated += new DataGridItemEventHandler(DataGrid_ItemCreated);
dgdList.SortCommand += new DataGridSortCommandEventHandler(DataGrid_SortCommand);
dgdList.ItemDataBound += new DataGridItemEventHandler(DataGrid_ItemDataBound);
}
/// <summary>
/// 设置事件的DataGrid。
/// </summary>
protected virtual DataGrid InitialDataGridControl
{
get
{
return null ;
}
}
/// <summary>
/// 分页。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected virtual void DataGrid_PageIndexChanged( object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
}
/// <summary>
/// 添加表头的排序标识。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected virtual void DataGrid_ItemCreated( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
}
/// <summary>
/// 排序。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected virtual void DataGrid_SortCommand( object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
}
/// <summary>
/// 设置行格式。
/// </summary>
/// <param name="source"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <author> 天志 </author>
/// <log date="2007-11-21"> 创建 </log>
protected void DataGrid_ItemDataBound( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// 获取每行的数据
DataRowView drv = (DataRowView)e.Item.DataItem;
this .ItemDataBoundSet(sender, e, drv);
}
}
/// <summary>
/// 设置普通行的格式。
/// </summary>
/// <param name="sender"> DataGrid控件 </param>
/// <param name="e"> 存储事件数据对象 </param>
/// <param name="drv"> 行数据 </param>
protected virtual void ItemDataBoundSet( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e, DataRowView drv)
{
}
/// <summary>
/// 取得DataGrid的数据源。
/// </summary>
/// <returns> 数据源 </returns>
/// <author> 天志 </author>
/// <log date="2007-11-13"> 创建 </log>
protected virtual DataView GetDataView()
{
throw new Exception( " 没有重写基类中的“GetData()”函数,所以无法设置DataGrid的数据源。 " );
}
/// <summary>
/// 添加DataGrid的数据源。
/// </summary>
/// <param name="dgdList"> DataGrid控件 </param>
/// <param name="refresh"> 是否重新读取数据源 </param>
/// <param name="sortExpression"> 排序字段 </param>
/// <author> 天志 </author>
/// <log date="2007-11-13"> 创建 </log>
private void BindDataGrid(DataGrid dgdList, bool refresh, string sortExpression)
{
}
}
基类里,有几个函数是允许被覆盖的。
GetDataView():取得DataGrid的数据源。
InitialDataGridControl属性:当前页面中的DataGrid。
ItemDataBoundSet(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e, DataRowView drv):根据不同的情景,设置DataGrid的行显示格式。