gridview合并单元格困惑

slgym 2007-12-27 04:58:33
照别人提供的代码修改,合并单元格怎么结果数据发生错位,代码如下,有哪位做过这样的高手给点意见

Dim row As Integer = 0 '行
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

Dim rowindex As Integer = e.Row.RowIndex
If rowindex - 1 < 0 Then Return
If e.Row.Cells(0).Text = GridView1.Rows(rowindex - 1).Cells(0).Text Then

If (GridView1.Rows(row).Cells(0).RowSpan = 0) Then
GridView1.Rows(row).Cells(0).RowSpan = GridView1.Rows(row).Cells(0).RowSpan + 1
End If
GridView1.Rows(row).Cells(0).RowSpan = GridView1.Rows(row).Cells(0).RowSpan + 1
e.Row.Cells(0).Visible = False
Else
row = rowindex
End If
End Sub

谢谢大家浏览该帖了,不说话也没关系,看一看也是对俺的支持!!!
...全文
645 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzqbsn 2009-01-21
  • 打赏
  • 举报
回复
11楼的兄弟,这代码我也试过,就是在最后一行没能合并,不知道哪里有点问题
changjiangzhibin 2008-01-03
  • 打赏
  • 举报
回复
study
xiaohe_83030489 2008-01-03
  • 打赏
  • 举报
回复
Try this!
1///
2 /// 合并GridView中某列相同信息的行(单元格)
3 ///
4 /// GridView
5 /// 第几列
6 public static void GroupRows(GridView GridView1, int cellNum)
7 {
8 int i = 0, rowSpanNum = 1;
9 while (i < GridView1.Rows.Count - 1)
10 {
11 GridViewRow gvr = GridView1.Rows[i];
12
13 for (++i; i < GridView1.Rows.Count; i++)
14 {
15 GridViewRow gvrNext = GridView1.Rows[i];
16 if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
17 {
18 gvrNext.Cells[cellNum].Visible = false;
19 rowSpanNum++;
20 }
21 else
22 {
23 gvr.Cells[cellNum].RowSpan = rowSpanNum;
24 rowSpanNum = 1;
25 break;
26 }
27
28 if (i == GridView1.Rows.Count - 1)
29 {
30 gvr.Cells[cellNum].RowSpan = rowSpanNum;
31 }
32 }
33 }
34 }
35
36
xiaohe_83030489 2008-01-03
  • 打赏
  • 举报
回复
顶!!
slgym 2008-01-03
  • 打赏
  • 举报
回复
自己再顶一下,又有新的问题
当第一条记录不需要合并时,后面的能正常合并;
当第一条记录需要和后面的记录合并时,后面的合并就发生错行了。
实在是闹不明白,高人指点啊
蜗牛水里爬 2007-12-29
  • 打赏
  • 举报
回复
给你个前台控制的 后台也是一样的 控制的
这是个偶写项目的时候数据非常多又要显示下 实在没办法想了个解决的歪招
   <asp:GridView ID="GridView1" runat="server" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
AutoGenerateColumns="False" Width="100%">
<Columns>
<asp:TemplateField HeaderText="人员信息">
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" CssClass="grid1" Height="20px"
Width="325px" />
<ItemTemplate>
<div style="width: 50%; float: left">
省份:<%# DataBinder.Eval(Container,"DataItem.SF") %></div>
<div style="width: 50%; float: right">
地区:<%# DataBinder.Eval(Container,"DataItem.DQ") %></div>
<div style="width: 50%; float: left">
单位:<%# DataBinder.Eval(Container,"DataItem.DW") %></div>
<div style="width: 50%; float: right">
科室:<%# DataBinder.Eval(Container,"DataItem.KS") %></div>
<div style="width: 50%; float: left">
姓名:<%# DataBinder.Eval(Container,"DataItem.NAME")%></div>
<div style="width: 50%; float: right">
电话:<%# DataBinder.Eval(Container,"DataItem.TEL") %></div>
<div style="width: 50%; float: left">
地址:<%# DataBinder.Eval(Container,"DataItem.ADDRESS")%>
</div>
<%-- <span title='<%#DataBinder.Eval(Container, "DataItem.NewsTitle") %>'>--%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="设备详细信息">
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" CssClass="grid1" Height="20px"
Width="325px" />
<ItemTemplate>
<div style="width: 50%; float: left">
<p>
序列号:<%# DataBinder.Eval(Container,"DataItem.sn") %></p>
</div>
<div style="width: 50%; float: right">
<p>
规格型号:<%# DataBinder.Eval(Container,"DataItem.GGXH") %></p>
</div>
<div style="width: 50%; float: left">
CPU:<%# DataBinder.Eval(Container,"DataItem.CPU") %></div>
<div style="width: 50%; float: right">
内存:<%# DataBinder.Eval(Container,"DataItem.memory") %></div>
<div style="width: 50%; float: left">
硬盘:<%# DataBinder.Eval(Container,"DataItem.hd") %></div>
<div style="width: 50%; float: right">
主板:<%# DataBinder.Eval(Container,"DataItem.main_board") %></div>
<div style="width: 50%; float: left">
光驱:<%# DataBinder.Eval(Container,"DataItem.cd") %></div>
<div style="width: 50%; float: right">
电源:<%# DataBinder.Eval(Container,"DataItem.DY") %></div>
<div style="width: 50%; float: left">
显示器:<%# DataBinder.Eval(Container,"DataItem.XSQ") %></div>
<div style="width: 50%; float: right">
购买日期:<%# DataBinder.Eval(Container,"DataItem.GMDATE") %></div>
<%-- <span title='<%#DataBinder.Eval(Container, "DataItem.NewsTitle") %>'>--%>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
</Columns>
</asp:GridView>
slgym 2007-12-29
  • 打赏
  • 举报
回复
谢谢6楼的朋友,但结果和你的要求不是一样的。
slgym 2007-12-29
  • 打赏
  • 举报
回复
回复:大宋提刑官

结果是该合并的数据项并没有合并,反而是后面的数据往前挪了

如:
A1 B1 C1 D1
A1 B2 C2 D2

A3 B3 C3 D3
A3 B4 C4 D4


合并后成了这样子

A1 B1 C1 D1
B2 C2 D2
A3 B3 C3 D3
B4 C4 D4

实在是搞不懂?
一品梅 2007-12-28
  • 打赏
  • 举报
回复
不太明白你错行什么意思,举几个简单例子看看.
slgym 2007-12-28
  • 打赏
  • 举报
回复
3楼的兄弟,照你的修改了还是错行啊
一品梅 2007-12-28
  • 打赏
  • 举报
回复
If (GridView1.Rows(row).Cells(0).RowSpan = 0) Then
GridView1.Rows(row).Cells(0).RowSpan = GridView1.Rows(row).Cells(0).RowSpan + 1
End If
GridView1.Rows(row).Cells(0).RowSpan = GridView1.Rows(row).Cells(0).RowSpan + 1 e.Row.Cells(0).Visible = False
slgym 2007-12-28
  • 打赏
  • 举报
回复
自己顶了
F15Eagle 2007-12-27
  • 打赏
  • 举报
回复
顶一个

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧