合并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="上报人" />