#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,發出請求時合併顯示第幾列
效果圖: