首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
capsicum29 (8)
qdzx2008 (51)
ShowLong (1)
cyp403 (16)
yjz0065 (114)
lphpc (31)
smallnest (63)
tellmenow (22)
cutemouse (22)
softj (78)
CSDN - 文档中心 - .NET 阅读:8638   评论: 9    参与评论
标题   合并datagrid中内容相同的单元格     选择自 jxf_yx 的 Blog
关键字   datagrid
出处  

有时,我们要把一列中内容相同的单元格合并起来。如下图:

合并后的效果图:

下面就说说怎么实现的:

Sub SpanGrid()
        Dim i As Integer
        Dim j As Integer
        Dim intSpan As Integer,NowSpan As Integer = 0
        Dim strTemp As String
        For i = 0 To DGrid.Items.Count - 1
            intSpan = 1   

'得到第一列(颜色)、第一行单元格中的内容。这里得到是“红色Red”。(datagrid里用了模版列)
            strTemp = CType(DGrid.Items(i).Cells(0).Controls(1), System.Web.UI.WebControls.Label).Text

’循环判断。判断第一列中,和第一行相同的内容。相同做记号,intspan加一
            For j = i + 1 To DGrid.Items.Count - 1
                If String.Compare(strTemp, CType(DGrid.Items(j).Cells(1).Controls(1), System.Web.UI.WebControls.Label).Text) = 0 Then
                    intSpan += 1

'利用datagrid的rowspan属性。(设置控件中单元格跨越的行数为intspan)
                    DGrid.Items(i).Cells(0).RowSpan = intSpan

’把内容相同单元格隐藏
                    DGrid.Items(j).Cells(0).Visible = False
                Else
                    Exit For
                End If
            Next
            'i = j - 1 我原来的

            NowSpan += intSpan  '修改后的可以节省循环次数.
            i = NowSpan - 1
        Next
    End Sub

=======

引用:

 Sub bindgrid()
        '把数据绑定到datagrid        
        ........
        SpanGrid()
End Sub

=================新增内容。合并其他列的内容相同的单元格========

在第一列已经合并的情况下再合并其他列内容相同的单元格

只要在i=j-1前做个类示循环即可。下面是效果图:


相关文章
对该文的评论
CSDN 网友 ( 2004-07-26)
请问,有没有对应VB.NET的实现代码?
Ani ( 2003-09-17)
只能对WEB上用的?
dragonsuc ( 2003-07-01)
private void  SpanGrid()
{

int i;
int j;
int intspan;
string temp;
for(i=0;i {
DataGridItem _item = DataGrid1.Items[i]; 
intspan = 1;
temp =DataGrid1.Items[i].Cells[0].Text;
for(j=i+1;j {
if(String.Compare(temp, DataGrid1.Items[j].Cells[0].Text)== 0)
{
intspan++;
DataGrid1.Items[i].Cells[0].RowSpan = intspan;
DataGrid1.Items[j].Cells[0].Visible = false;
}
else
{
break;
}

}
i=j-1;
}

}

//是我的考虑不周,曲解了作者的意思 这是c#的
jxf_yx ( 2003-06-23)
已经修改
jxf_yx ( 2003-06-23)
谢谢提出意见