.net 合并GridView中某列相同信息的行(方法2)

合并GridView中某列相同信息的行的方法:

 1  /// <summary>
 2     ///  合并1、2、3、4、5、6、7列 
 3     /// </summary>
 4     private void gvRender(GridView GridView1)
 5     {
 6         int i = 0, j = 0;
 7         int rowSpanNum = 1;//暂时默认合并行为1行
 8         string mystr; //用于与下一行对比
 9         //预读入第一行
10         if (GridView1.Rows.Count>1)
11         {
12             mystr = GridView1.Rows[i].Cells[j+1].Text;
13             //从第一行到最后一行
14             while (i < GridView1.Rows.Count - 1)
15             {
16                 //探索一个合并单元格  
17                 for (++i; i < GridView1.Rows.Count; i++)
18                 {
19                     if (mystr == GridView1.Rows[i].Cells[j+1].Text)
20                     {
21                         //遇到相同行,1 隐藏该行;2 合并行数加一
22 
23                         // 1  
24                        // GridView1.Rows[i].Cells[j + 0].Visible = false;
25                         GridView1.Rows[i].Cells[j + 1].Visible = false;
26                         GridView1.Rows[i].Cells[j + 2].Visible = false;
27                         GridView1.Rows[i].Cells[j + 3].Visible = false;
28                         GridView1.Rows[i].Cells[j + 4].Visible = false;
29                         GridView1.Rows[i].Cells[j + 5].Visible = false;
30                         GridView1.Rows[i].Cells[j + 6].Visible = false;
31                         GridView1.Rows[i].Cells[j + 7].Visible = false;
32                         // 2   
33                         rowSpanNum++;
34                     }
35                     else
36                     {
37                         //没有相同行,1 刷新预读比较行;2 回写前面的合并行信息;3 重置合并行为1;4 完成一次合并             
38 
39                         // 1
40                         mystr = GridView1.Rows[i].Cells[j+1].Text;
41                         // 2
42                         //GridView1.Rows[i - rowSpanNum].Cells[j + 0].RowSpan = rowSpanNum;
43                         GridView1.Rows[i - rowSpanNum].Cells[j + 1].RowSpan = rowSpanNum;
44                         GridView1.Rows[i - rowSpanNum].Cells[j + 2].RowSpan = rowSpanNum;
45                         GridView1.Rows[i - rowSpanNum].Cells[j + 3].RowSpan = rowSpanNum;
46                         GridView1.Rows[i - rowSpanNum].Cells[j + 4].RowSpan = rowSpanNum;
47                         GridView1.Rows[i - rowSpanNum].Cells[j + 5].RowSpan = rowSpanNum;
48                         GridView1.Rows[i - rowSpanNum].Cells[j + 6].RowSpan = rowSpanNum;
49                         GridView1.Rows[i - rowSpanNum].Cells[j + 7].RowSpan = rowSpanNum;
50                         // 3
51                         rowSpanNum = 1;
52 
53                         // 4  
54                         break;
55                     }
56                 }
57             }
58             //结尾
59             if (rowSpanNum > 1)
60             {
61                // GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[0].RowSpan = rowSpanNum;
62                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[1].RowSpan = rowSpanNum;
63                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[2].RowSpan = rowSpanNum;
64                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[3].RowSpan = rowSpanNum;
65                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[4].RowSpan = rowSpanNum;
66                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[5].RowSpan = rowSpanNum;
67                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[6].RowSpan = rowSpanNum;
68                 GridView1.Rows[GridView1.Rows.Count - rowSpanNum].Cells[7].RowSpan = rowSpanNum;
69             }
70         }
71     }

方法调用:

1 gvRender(SearchGrird);

效果图:

 

 

注意:本方法不支持gridview模板列,如下:

1 <asp:TemplateField HeaderText="序号">
2                                                 <ItemTemplate>                                               
3                                                     <%#Container.DataItemIndex+1%>
4                                                 </ItemTemplate>
5                                                  <ControlStyle Font-Underline="False" />
6                                             </asp:TemplateField>

           支持下列的写法:

 1 <asp:BoundField DataField="Name" HeaderText="病人姓名" />
 2                                             <asp:BoundField DataField="patient_id" HeaderText="门诊号" />
 3                                             <asp:BoundField DataField="visit_id" HeaderText="住院次数" />
 4                                             <asp:BoundField DataField="REPORT_NAME" HeaderText="报告类型" />
 5                                             <asp:BoundField DataField="SEX" HeaderText="性别" />
 6                                             <asp:BoundField DataField="Age" HeaderText="年龄" />
 7                                             <asp:BoundField DataField="Weight" HeaderText="体重" />
 8                                             <asp:BoundField DataField="Diagnosis" HeaderText="原患病历" />
 9                                             <asp:BoundField DataField="DOSAGE" HeaderText="怀疑药品名称" />
10                                             <asp:BoundField DataField="START_TIME" HeaderText="用药开始时间" />
11                                             <asp:BoundField DataField="END_TIME" HeaderText="用药结束时间" />
12                                             <asp:BoundField DataField="FS_DATE" HeaderText="不良反应发生时间" />
13                                             <asp:BoundField DataField="XX_MS" HeaderText="药品不良反应名称" />
14                                             <asp:BoundField DataField="CS_FF" HeaderText="处理情况" />
15                                             <asp:BoundField DataField="report_name_seven" HeaderText="结果" />
16                                             <asp:BoundField DataField="REPORT_DATE" HeaderText="上报时间" />
17                                             <asp:BoundField DataField="DEPT_NAME" HeaderText="上报科室" />
18                                             <asp:BoundField DataField="REPORTER_SIGN" HeaderText="上报人" />    

 

posted @ 2021-03-24 10:49  小小枝子  阅读(41)  评论(0编辑  收藏  举报