GridView、Repeater合并单元格

GridViewRepeater合并单元格

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

一、           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

 

posted on   张皓  阅读(4567)  评论(8编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
< 2009年4月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
3 4 5 6 7 8 9

导航

统计

点击右上角即可分享
微信分享提示