• 扩展DataGrid 荣


    在ASP.NET编程中,经常会用到DataGrid(或GridView)。
    其实,用的时候,这个DataGrid与那个DataGrid,很多功能都几乎是相同的。
    例如,分页,排序。例如:一般情况下,Int列应该居中显示,字符串列应该靠左排序,
    double等应该靠右排序,且应该取到小数点后两位,时间格式应该居中,且应该按一定格式显示,例如“YYYY-MM-DD”;如果某列允许排序,则该列的排序字段一般与DataFeild相同。
    其实,我们可以扩展一下BoundColumn,让BoundColumn根据DataFeild的不同而显示不同的默认属性。
    设计:

    1:扩展BoundColumn类:
     public class XMRBoundColumn : BoundColumn

    2:在类中设置表示DataFeild数据类型的属性DataType。

    3:重写Initialize(),在Initialize()中,设置列的默认属性:
      1)如果是整型,则:
    if (this.ItemStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                        }

                        if (this.HeaderStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                        }


    2)如果是小数:
    if (this.DataFormatString == string.Empty || this.DataFormatString.Equals(""))
                        {
                            this.DataFormatString = "{0:N2}";
                        }

                        if (this.ItemStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
                        }

                        if (this.HeaderStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;
                        }
    3)如果是日期:
    if (this.DataFormatString == string.Empty || this.DataFormatString.Equals(""))
                        {
                            this.DataFormatString = "{0:yyyy-MM-dd}";
                        }

                        if (this.ItemStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                        }

                        if (this.HeaderStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                        }
    4)其他:
    if (this.ItemStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.ItemStyle.HorizontalAlign = HorizontalAlign.Left;
                        }

                        if (this.HeaderStyle.HorizontalAlign == HorizontalAlign.NotSet)
                        {
                            this.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
                        }

    4:在Initialize()中,设置列的排序字段:
    if (this.SortExpression == null || this.SortExpression == "")
                {
                    this.SortExpression = this.DataField;
                }

    现在,把DataGrid中的BoundColumn,替换为XMRBoundColumn,则可是少写很多代码了。

    当然,DataGrid也可以扩展,我们可以扩展一个DataGridEx:
    public class DataGridEx : DataGrid

    至于DataGridEx怎么扩展,本节就不多讲,也无非是添加默认的翻页,排序事件,设置每一列的数据类型等。

    扩展后的代码如下:
    皮肤代码:【Default.skin中】


    <%@ Register Assembly="DOTNET.Common" Namespace="DOTNET.Web" TagPrefix="cc1" %>
    <cc1:DataGridEx SkinID="dgdListEx" BorderWidth="1px" PageSize="15" 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" />


    页面代码:

            
    <cc1:DataGridEx ID="dgdList" SkinID="dgdListEx" runat="server">         
     <Columns>    
       
    <cc1:XMRBoundColumn DataField="ClassName" HeaderTex="ClassName" />
                    
    <asp:BoundColumn DataField="StudentGUID" Visible="False" />
                    
    <cc1:XMRBoundColumn DataField="StudentName" HeaderText="StudentName" />
                    
    <asp:BoundColumn DataField="ClassGUID" Visible="False" />
     </Columns>
            </cc1:DataGridEx>

    是不是和代码很简略啊。
  • 相关阅读:
    Chrome下载无后缀问题
    duilib程序HelloWorld
    go的windows下的安装包
    ASP.NET MVC异步上传图片和富文本编辑器的使用详解
    搭建go环境(windows和linux)
    构建离线Go编程指南——gotour
    判定模块加载时是否存在循环依赖
    Winform开发框架之框架演化
    为什么要写技术博
    JTREE使用例子—创建一个客户端界面
  • 原文地址:https://www.cnblogs.com/admin11/p/1258613.html
Copyright © 2020-2023  润新知