困惑DataGridView单元格合并!

zl194 2010-06-09 01:19:19
客户想要这样的一个表格效果。


可能效果不太明显,就是要分产品的显示明显记录和汇总情况,其中涉及到单元的合并,并且是分产品的单元合并(如其中哦你4x虽然是相同的值,但是并不进行合并,英文产品不同。)

请高手帮我看看用DataGridView能做吗,如果不能用什么做,最好能给我个例子程序,我用的是VS2005项目是在WinForm下的。哪位好心发到我邮箱:zl194@126.com谢谢大家。发邮件时给个您的ID,我会来给分结贴的。

万分感谢!!!!!!!!!!

...全文
3556 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanjingling9701 2013-01-23
  • 打赏
  • 举报
回复
一直没有合适的答案啊?能否合并任一单元格啊
戒指 2010-11-30
  • 打赏
  • 举报
回复
这个我也在研究中~ 我想合并表头!!
zl194 2010-06-10
  • 打赏
  • 举报
回复
谢谢阿捷,我先看看。
捷哥1999 2010-06-10
  • 打赏
  • 举报
回复
下载上面那个源代码,然后使用很简单,就是这样,这是vb.net的调用方式, c#稍微修改,就是语法问题:

' 在现有行后面添加一行
Dim rowPos As Integer = e.RowIndex + 1

Dim dv As DataView = Me.MergedDataGridView1.DataSource
Dim row As DataRow = dv.Table.NewRow()
dv.Table.Rows.InsertAt(row, rowPos)

' 得到合并后要显示的数据
Dim mergedRowText As New System.Text.StringBuilder
mergedRowText.AppendLine(Me.MergedDataGridView1("Description", e.RowIndex).Value.ToString)
mergedRowText.AppendLine(Me.MergedDataGridView1("Link", e.RowIndex).Value.ToString)

' 调用自定义datagridview的AddMergedRow方法,就可以了。
Me.MergedDataGridView1.AddMergedRow(rowPos, mergedRowText.ToString)
捷哥1999 2010-06-10
  • 打赏
  • 举报
回复
你参考这个吧!


MergedDataGridView Control
捷哥1999 2010-06-10
  • 打赏
  • 举报
回复
吴老师给的是gridveiw,webform!
zl194 2010-06-10
  • 打赏
  • 举报
回复
吴老师的最后一个回复的不行,是不是在vs2005下不行呢,还是winform不行。总之找不到rowspan属性。
zl194 2010-06-10
  • 打赏
  • 举报
回复
但是好像DataGridView 里面没有 rowSpan这个属性的。
zl194 2010-06-10
  • 打赏
  • 举报
回复
我研究研究吴老师的这个吧,第三方控件还要现学,也不容易啊。
zl194 2010-06-10
  • 打赏
  • 举报
回复
还是用了第三方控件,FARPOINT ,感谢大家。
wuyq11 2010-06-09
  • 打赏
  • 举报
回复
public static void MRows(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;
}
}
}
}
/// 根据条件列合并GridView列中相同的行
public static void MRows(GridView GridView1, int cellNum, int cellNum2)
{
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 + gvr.Cells[cellNum2].Text == gvrNext.Cells[cellNum].Text + gvrNext.Cells[cellNum2].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;
}
}
}
}



zmok8866 2010-06-09
  • 打赏
  • 举报
回复
困惑。。。6楼的头像让我很困惑
lanfengsese 2010-06-09
  • 打赏
  • 举报
回复
第三方控件。。。
捷哥1999 2010-06-09
  • 打赏
  • 举报
回复
xk1126 2010-06-09
  • 打赏
  • 举报
回复
用第三放控件吧!~
这样方便!不过我用过,都是老师给的
我也不会!~
  • 打赏
  • 举报
回复
学习...
lzsh0622 2010-06-09
  • 打赏
  • 举报
回复
足球中国 2010-06-09
  • 打赏
  • 举报
回复
如果用第三方控件还是比较容易实现的。
足球中国 2010-06-09
  • 打赏
  • 举报
回复
直接做到excel里比较简单。还有一个用报表的方式显示。
猫先生Al 2010-06-09
  • 打赏
  • 举报
回复
不知道 LZ 用没用过 FARPOINT 控件,使用起来很方便!只要是EXCEL能做出来的表格,他全都能够将数据绑定到控件上
加载更多回复(4)

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧