以较少代码实现DataGrid的排序,翻页,删除等功能【2】

关于上一篇,《以较少代码实现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 "   />


而添加,删除,编辑按钮的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 >

至于脚本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)
    {
         
    }
}


基类里,有几个函数是允许被覆盖的。
GetDataView():取得DataGrid的数据源。
InitialDataGridControl属性:当前页面中的DataGrid。
ItemDataBoundSet(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e, DataRowView drv):根据不同的情景,设置DataGrid的行显示格式。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值