zoukankan      html  css  js  c++  java
  • DataGrid使用技巧小总结个性化分页及复杂表头

        在使用DataGrid 的时候,总是会有各种各样的需求,在和数据库打交道的项目中用的最多的恐怕就属DataGrid 了吧,微软有时候做的就差那么一点点,所以就需要我们自己来动手实现啦.

    DataGrid 自定义分页导航

    无需任何其他第三方控件,在DataGrid 自己分页的基础上再个性化一点.
    效果:  

    让DataGrid自己的分页实现这样的效果
    [1][2][3][4][5][6] 
      

    让DataGrid自己的分页实现这样的效果
    [1][2][3][4][5][6]

    private void grid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
      {
       if(e.Item.ItemType==ListItemType.Pager)
       {    
        foreach (Control c in e.Item.Cells[0].Controls)
        {
         if (c is Label)  //
    当前页数
         {
            Label lblpage=(Label)c;
    //      lblpage.ForeColor= System.Drawing.ColorTranslator.FromHtml("#e78a29"); //#e78a29 ,#FF0000     
    //      lblpage.Font.Bold=true;
            lblpage.Text="[<font color=#e78a29><b>"+lblpage.Text+"</b></font>]";     
          //((Label)c).ForeColor = System.Drawing.Color.Green;      
    //      break;
         }
         if(c is LinkButton) //
    链接的其他页数
         {      
             LinkButton linkButton = (LinkButton)c;       
             linkButton.Text = "[" + linkButton.Text+"]";
         }
        }    
       }
      } 
     

    DataGrid等控件中的自动编号:

    添加一个模版列:

    <asp:TemplateColumn HeaderText="No.">
        
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
        
    <ItemTemplate>
            
    <asp:Label runat="server" Text='<%# dgCustomize.CurrentPageIndex*dgCustomize.PageSize+dgCustomize.Items.Count+1 %>'>
            
    </asp:Label>
        
    </ItemTemplate>
    </asp:TemplateColumn>

    DataGrid中创建复杂表头

    方法一:用table实现

      <form id="Form1" method="post" runat="server">
       <TABLE id="Table1" runat="server" cellSpacing="1" cellPadding="2" width="580" border="1"
        bgcolor="#cc6633" bordercolor="#cc9966" style="FONT-SIZE:9pt;BORDER-BOTTOM:0px">
        <TR align="center">
         <TD colspan="2" width="380" style="HEIGHT: 21px"></TD>
         <TD width="200" colspan="2" style="HEIGHT: 21px"></TD>
        </TR>
        <TR align="center">
         <TD width="200" bgcolor="#66cc99"><FONT face="
    宋体"></FONT></TD>
         <TD width="180" bgcolor="white"><FONT face="
    宋体"></FONT></TD>
         <TD width="160" bgcolor="#99cccc"></TD>
         <TD width="40" bgcolor="#009999"></TD>
        </TR>
       </TABLE>
       <asp:DataGrid id="DataGrid1" width="580px" AlternatingItemStyle-BackColor="#6699ff" CellPadding="2"
        CellSpacing="1" BorderWidth="1" BorderColor="#cc9966" Font-Size="9pt" runat="server" ShowHeader="False"
        AutoGenerateColumns="False">
        <Columns>
         <asp:BoundColumn DataField="Title">
          <ItemStyle Width="200px"></ItemStyle>
         </asp:BoundColumn>
         <asp:BoundColumn DataField="CreateDate">
          <ItemStyle Width="180px"></ItemStyle>
         </asp:BoundColumn>
         <asp:BoundColumn DataField="pid">
          <ItemStyle Width="160px"></ItemStyle>
         </asp:BoundColumn>
         <asp:BoundColumn DataField="HitCount">
          <ItemStyle Width="40px"></ItemStyle>
         </asp:BoundColumn>
        </Columns>
       </asp:DataGrid>   
      </form> 

    窗体顶端

    窗体底端

    方法二:动态生成表头

    生成双层表头:
      private void grid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
      {

       if (e.Item.ItemType == ListItemType.Header)
       {
    //    e.Item.Cells[0].ColumnSpan = 1;//
    这是第一列的跨列数
        StringBuilder strtext=new StringBuilder();
        strtext.Append("\\</td>");
        strtext.Append("<td colspan=4>
    生活照明</td>");
        strtext.Append("<td colspan=2>
    一般照明</td>");
        strtext.Append("<td colspan=2>
    工付业</td>");
        strtext.Append("<td colspan=2>
    农业</td>");
        strtext.Append("<td colspan=2>
    合计</td>");
        strtext.Append("</tr>");
        strtext.Append("<tr>");
        strtext.Append("<td>" + e.Item.Cells[0].Text);               
        e.Item.Cells[0].Text =strtext.ToString();

       }

    }

    整个表头内容:<tr><td>  e.Item.Cells[0].Text =的内容  </td></tr>

    加起来就是表头的样式。

    生活照明

    一般照明

    工付业

    农业

    合计

     

    生成三层表头:

    if (e.Item.ItemType == ListItemType.Header)
       {    
        StringBuilder strtext=new StringBuilder();
        strtext.Append("</td>");
        strtext.Append("<td colspan= 6>
    当月</td>");
        strtext.Append("</tr>");

     

        strtext.Append("<tr>"); 
        strtext.Append("<td colspan=2>
    居民</td>");
        strtext.Append("<td colspan=2>
    一般</td>");
        strtext.Append("<td colspan=2>
    工付业</td>");
        strtext.Append("</tr>");

     

        strtext.Append("<tr>");
        strtext.Append("<td>" + e.Item.Cells[0].Text);               
        e.Item.Cells[0].Text =strtext.ToString();
       }

     

    当月

    居民

    一般

    工付业

     

     

  • 相关阅读:
    切片/修改
    代码块,-- 循环结构--字符串的格式化--字符串相关函数功能
    format 填充符号 与 格式化
    字符串的格式化format
    python字符串相关函数 *title *upper *lower *swapcase *len *count *find *index *starts with *endswith *isalpha *isdecimal *split *center *strip *replace
    双层循环经典小项目题
    while 小项目练习
    for循环 | range 对象
    关键字的使用 pass break continue
    python字符串的切片
  • 原文地址:https://www.cnblogs.com/ltp/p/289674.html
Copyright © 2011-2022 走看看