/// <summary>
/// #region GridView中的第二列相同的数据列全部合并
/// </summary>
/// <param name="gridView"></param> public static void GroupRowSpan(GridView gridView)
{
for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--)
{
GridViewRow row = gridView.Rows[rowIndex];
GridViewRow previousRow = gridView.Rows[rowIndex + 1]; for (int i = 1; i < 2; i++)
{
if (row.Cells[i].Text == previousRow.Cells[i].Text)
{
if (previousRow.Cells[i].RowSpan < 2)
{
row.Cells[i].RowSpan = 2;
}
else
{
row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan + 1;
} previousRow.Cells[i].Visible = false; }
// previousRow.Cells[i + 1].Text = (int.Parse(previousRow.Cells[i + 1].Text) + int.Parse(previousRow.Cells[i + 1].Text)).ToString();
}
// previousRow.Cells[i+1].Text=int.Parse(row.Cells[i + 1].Text)+int.Parse(row.Cells[i + 1].Text))
}
}
===============================================================================================================
(1)以上的方法是倒序写循环gridview,合并第二列相同的行,这是从网上参考的,测试ok.
(2)以下是我写的方法,是顺序循环gridview,合并第二列相同的行,测试不通过,nextRowline.Cells[culmm].RowSpan一直都是0,gridview 的数据连续三行相同的数据就不通过。各位兄弟姐妹,只要认真不是灌水的都有分,被采纳的给68分,谢谢大家了!======================================================================================================
/// <summary>
/// #region GridView中的第二列相同的数据列全部合并
/// </summary>
/// <param name="gridView"></param> public static void groupRowSpan2(GridView gridView)
{
for (int rowid = 0; rowid < gridView.Rows.Count - 1; rowid++)
{
GridViewRow rowline = gridView.Rows[rowid];
GridViewRow nextRowline = gridView.Rows[rowid + 1]; for (int culmm = 1; culmm < 2; culmm++)
{
if (rowline.Cells[culmm].Text == nextRowline.Cells[culmm].Text)
{ if (nextRowline.Cells[culmm].RowSpan<2)
{ rowline.Cells[culmm].RowSpan = 2; }
else
{
rowline.Cells[culmm].RowSpan = nextRowline.Cells[culmm].RowSpan + 1;
}
nextRowline.Cells[culmm].Visible = false;
}
} }
}
/// #region GridView中的第二列相同的数据列全部合并
/// </summary>
/// <param name="gridView"></param> public static void GroupRowSpan(GridView gridView)
{
for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--)
{
GridViewRow row = gridView.Rows[rowIndex];
GridViewRow previousRow = gridView.Rows[rowIndex + 1]; for (int i = 1; i < 2; i++)
{
if (row.Cells[i].Text == previousRow.Cells[i].Text)
{
if (previousRow.Cells[i].RowSpan < 2)
{
row.Cells[i].RowSpan = 2;
}
else
{
row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan + 1;
} previousRow.Cells[i].Visible = false; }
// previousRow.Cells[i + 1].Text = (int.Parse(previousRow.Cells[i + 1].Text) + int.Parse(previousRow.Cells[i + 1].Text)).ToString();
}
// previousRow.Cells[i+1].Text=int.Parse(row.Cells[i + 1].Text)+int.Parse(row.Cells[i + 1].Text))
}
}
===============================================================================================================
(1)以上的方法是倒序写循环gridview,合并第二列相同的行,这是从网上参考的,测试ok.
(2)以下是我写的方法,是顺序循环gridview,合并第二列相同的行,测试不通过,nextRowline.Cells[culmm].RowSpan一直都是0,gridview 的数据连续三行相同的数据就不通过。各位兄弟姐妹,只要认真不是灌水的都有分,被采纳的给68分,谢谢大家了!======================================================================================================
/// <summary>
/// #region GridView中的第二列相同的数据列全部合并
/// </summary>
/// <param name="gridView"></param> public static void groupRowSpan2(GridView gridView)
{
for (int rowid = 0; rowid < gridView.Rows.Count - 1; rowid++)
{
GridViewRow rowline = gridView.Rows[rowid];
GridViewRow nextRowline = gridView.Rows[rowid + 1]; for (int culmm = 1; culmm < 2; culmm++)
{
if (rowline.Cells[culmm].Text == nextRowline.Cells[culmm].Text)
{ if (nextRowline.Cells[culmm].RowSpan<2)
{ rowline.Cells[culmm].RowSpan = 2; }
else
{
rowline.Cells[culmm].RowSpan = nextRowline.Cells[culmm].RowSpan + 1;
}
nextRowline.Cells[culmm].Visible = false;
}
} }
}
public static void GroupCol(GridView GridView1, int cols,int sRow,int eRow)
{
if (GridView1.Rows.Count < 1 || cols > GridView1.Columns.Count - 1)
{
return;
}
TableCell oldTc = GridView1.Rows[sRow].Cells[cols];
for (int i = 1; i < eRow - sRow; i++)
{
TableCell tc = GridView1.Rows[sRow + i].Cells[cols];
tc.Visible = false;
if (oldTc.RowSpan == 0)
{
oldTc.RowSpan = 1;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
}
public static void GroupRows(GridView GridView1, int cellNum)
{
int i = 0, rowSpanNum = 1;
while (i < GridView1.Rows.Count - 1)
{
GridViewRow gvr = GridView1.Rows[i];
for (++i; i < GridView1.Rows.Count; i++)
{
GridViewRow gvrNext = GridView1.Rows[i]; if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
{
gvrNext.Cells[cellNum].Visible = false;
rowSpanNum++;
}
else
{
gvr.Cells[cellNum].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
} if (i == GridView1.Rows.Count - 1)
{
gvr.Cells[cellNum].RowSpan = rowSpanNum;
}
}
}
}
private void SpanGrid()
{
int j=DataGrid1.Items.Count;//行数
int u;//自循环所用参数
for (int i = 0;i<j;i++)
{
int inRowSpan = 1;//跨行数
string ItmStr = DataGrid1.Items[i].Cells[0].Text.ToString();
for(u = i+1;u<j;u++)
{
if (ItmStr.Equals(DataGrid1.Items[u].Cells[0].Text.ToString()))
{
inRowSpan += 1;
DataGrid1.Items[i].Cells[0].RowSpan = inRowSpan;//对最歪层所循环行赋要跨行数
DataGrid1.Items[u].Cells[0].Visible = false;//当前被跨行不可见
}
else
{
break;
}
}
i = u - 1;
}
}
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
这里发言,表示您接受了CSDN社区的用户行为准则。
请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。