zoukankan      html  css  js  c++  java
  • ASP.NET GridView和Repeater合并单元格

      对于GridView、Repeater生成的表格一般都比较固定,但是有时候我们为了报表统计方便常把列名一样的单元格合并以达到易观察统计的效果,这样我们就需要对控件做必要的合并操作了,具体操作方法如下:

    一、GridView

    for (int i = gridInfo.Rows.Count - 1; i > 0; i--)
    {
        if (gridInfo.Rows[i].RowType == DataControlRowType.DataRow)
        {
            TableCell tCell = gridInfo.Rows[i].Cells[0];
            TableCell tCell_previous = gridInfo.Rows[i - 1].Cells[0];
            tCell.RowSpan = (tCell.RowSpan == 0) ? 1 : tCell.RowSpan;
    
     
    
            tCell_previous.RowSpan = (tCell_previous.RowSpan == 0) ? 1 : tCell_previous.RowSpan;
            if (tCell.Text == tCell_previous.Text)
            {
                tCell.Visible = false;
                tCell_previous.RowSpan += tCell.RowSpan;
            }
        }
    }
    

    二、Repeater

      

    <asp:Repeater runat="server" ID="rptInfo">
        <HeaderTemplate>
            <table cellpadding="0" cellspacing="0" border="1" bordercolor="black" width="100%" style="border-collapse:collapse; border-style:solid;">
                <tr>
                    <td>科室名称</td>
                    <td>出诊医生</td>
                    <td>职称</td>
                    <td>诊病人数</td>
                    <td>挂号价格</td>
                    <td>挂号金额</td>
                </tr>
    
        </HeaderTemplate>
        <ItemTemplate>
                <tr>
                    <td runat="server" id="tdDepName"><%#Eval("dep_name")%></td>
                    <td><%#Eval("doctor_name")%></td>
                    <td><%#Eval("title_name")%></td>
                    <td><%#Eval("register_person")%></td>
                    <td><%#Eval("price")%></td>
                    <td><%#Eval("total_money")%></td>
                </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

    后台代码:

    for (int i = rptInfo.Items.Count - 1; i > 0; i--)
    {
        HtmlTableCell oCell_previous = rptInfo.Items[i-1].FindControl("tdDepName") as HtmlTableCell;
        HtmlTableCell oCell = rptInfo.Items[i].FindControl("tdDepName") as HtmlTableCell;
    
        oCell.RowSpan = (oCell.RowSpan == -1) ? 1 : oCell.RowSpan;
        oCell_previous.RowSpan = (oCell_previous.RowSpan == -1) ? 1 : oCell_previous.RowSpan;
    
        if (oCell.InnerText == oCell_previous.InnerText)
        {
            oCell.Visible = false;
            oCell_previous.RowSpan += oCell.RowSpan;
        }
    }

    三、效果

    科室名称

    出诊医生

    职称

    诊病人数

    挂号价格

    挂号金额

    保健科

    孙思邈

    副高

    1

    33.0000

    33.0000

    华佗

    正高

    10

    30.0000

    300.0000

    黄欧

    正老

    6

    18.0000

    108.0000

    免费号

    免费

    6

    0.0000

    0.0000

    小计

    副高

    23

    0.0000

    441.0000

    保健门诊

    超级用户

    正高

    2

    10.0000

    20.0000

    超级用户

    正老

    2

    11.0000

    22.0000

    超级用户

    副高

    2

    21.0000

    42.0000

    超级用户

    正高

    5

    43.0000

    215.0000

    李时珍

    正老

    1

    1.0000

    1.0000

     

    原文地址:http://www.cnblogs.com/zhmore/archive/2009/04/22/1440979.html

  • 相关阅读:
    大数据开发速查表
    静态图像介绍
    get请求如何传递数组参数
    Redis 6.0 新增功能
    JVM 出现 StackOverflowError和OutOfMemoryError的可能
    golang超级mapper包
    dotnet vs java vs go
    [翻译]Jupyter notebook .NET Core 内核预览1
    .NET Core到底有多强?
    .net core 运行时事件(Runtime Events)
  • 原文地址:https://www.cnblogs.com/cxeye/p/2874858.html
Copyright © 2011-2022 走看看