#region 合并GridView中某列相同信息的行(单元格)
/// <summary>
/// 合并GridView中某列相同信息的行(单元格)
/// </summary>
/// <param name="GridView1">GridView</param>
/// <param name="cellNum">第几列</param>
public static void GroupRows(GridView GridView1, int intColNum, ArrayList list)
{
int i = 0, rowSpanNum = 1;
for (int j = 0; j < intColNum; j++)
{
while (i < GridView1.Rows.Count - 1)
{
GridViewRow gvr = GridView1.Rows[i];
for (++i; i < GridView1.Rows.Count; i++)
{
GridViewRow gvrNext = GridView1.Rows[i];
//纵向相邻单元格的内容相同
//找出使用隐藏字段存储的值,这是关键3.
//sss = ((Label)gvr.Cells[j].FindControl("" + list[3].ToString() + "")).Text + ((Label)gvr.Cells[j].FindControl("" + list[0].ToString() + "")).Text;
if (j != 5)
{
if (((Label)gvr.Cells[j].FindControl("" + list[j].ToString() + "")).Text.Trim().ToString() == ((Label)gvrNext.Cells[j].FindControl("" + list[j].ToString() + "")).Text.Trim().ToString() && ((Label)gvr.Cells[j].FindControl("lbldxid")).Text.Trim().ToString() == ((Label)gvrNext.Cells[j].FindControl("lbldxid")).Text.Trim().ToString())
{
gvrNext.Cells[j].Visible = false;
rowSpanNum++;
}
else
{
gvr.Cells[j].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}
}
else
{
if (list[5].ToString() == "txtpf")
{
if (((TextBox)gvr.Cells[j + 1].FindControl("txtpf")).Text.Trim().ToString() == ((TextBox)gvrNext.Cells[j + 1].FindControl("txtpf")).Text.Trim().ToString() && ((Label)gvr.Cells[j + 1].FindControl("lbldxid")).Text.Trim().ToString() == ((Label)gvrNext.Cells[j + 1].FindControl("lbldxid")).Text.Trim().ToString())
{
gvrNext.Cells[j + 1].Visible = false;
rowSpanNum++;
}
else
{
gvr.Cells[j + 1].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}
}
}
if (i == GridView1.Rows.Count - 1)
{
if (j == 5)
{
gvr.Cells[j + 1].RowSpan = rowSpanNum;
}
else
{
gvr.Cells[j].RowSpan = rowSpanNum;
}
}
}
}
i = 0;
rowSpanNum = 1;
}
}
#endregion
调用方法:
ArrayList list = new ArrayList();
list.Add("lbldxmc");
list.Add("lblxxbt");
list.Add("lblkhsm");
list.Add("lblkhyq");
list.Add("xxfs");
list.Add("txtpf");
BindDx();//绑定数据源
GroupRows(GridView1, 6, list); //关键1,发出请求时合并显示第几列
效果图: