zoukankan      html  css  js  c++  java
  • 以较少代码实现DataGrid的排序,翻页,删除等功能(续) 荣

    关于上一篇,《以较少代码实现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的行显示格式。
  • 相关阅读:
    JSP自定义标签_用简单标签控制标签体执行10次
    JSP自定义标签_用简单标签实现控制标签体是否执行
    eclipse 使用lombok 精简java bean
    转 :关于springmvc使用拦截器
    转: spring静态注入
    spring 4.0+quartz2.2 实现持久化
    排除maven jar冲突 maven tomcat插件启动报错 filter转换异常
    转 Quartz将Job持久化所需表的说明
    转 maven jetty 插件
    ORA-14300: 分区关键字映射到超出允许的最大分区数的分区
  • 原文地址:https://www.cnblogs.com/admin11/p/974000.html
Copyright © 2011-2022 走看看