我也做过一个跟你需求有点类似的项目,当时网上查了下,datagridview貌似可以合并单元格,但是很烦,最后放弃。最终采用两个datagridview贴在一起,动态改变左边那个datagridview的行高度 dataGridView1.Rows[0].Height;改变右边那个datagridview的列数,dataGridView1.RowCount;来实现这个功能,当然两个datagr...
需要重绘单元格。在下面这个事件里写就可以了,下面这个例子只是对第一列中内容相同的数据合并,你可以根据自己的实际情况做调整,可以写了一个控件,可以随时设定合并哪一列,一次合并几行数据。private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){ // 对第1列相...
http://wenku.baidu.com/view/f15161b7c77da26925c5b09b.html
比如 select userName+userAddress as PeopleInfo , age , hobby from userinfo 查询出来的结果 用户姓名和住址就合并了 放入datagridview 就和平常的操作时一样的 ,当他只有三个字段,哈哈
完全的可以 使用自定义表格头部,创建一个具有两行的表头,第一行设置其colspan使其跨列,第二行让他和gridview的实际列相等就能实现你的效果了 做法是编辑gridview的RowCreated事件 if (e.Row.RowType == DataControlRowType.Header){ GridViewRow rowHeader = new GridViewRow(0, 0, DataControlRowType....
var rect2 = dataGridView1.GetCellDisplayRectangle(cell2.ColumnIndex, cell2.RowIndex, true); //两列相同就合并了 PointList.Add(new SpanEntity() { Item = cell1.Value.ToString() , XY = new Point(rect1.X, rect1.Y) , WH = new Size(rect1.Width + rect2.Width...
string curSelected = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value == null ? "": this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString().Trim();if (!string.IsNullOrEmpty(curValue)){ for (int i = e.RowIndex; i < this.dataGridView1.Rows.Count; i++){ if...
我记得以前回答过相同的问题,这个中间一部分是一个被隐藏了列头的datagridview 上方是很多label控件组合而成的表头。中间的datagridview列和上面label做出来的列对齐。也就是,列宽不能改变,不然就走样了。下方就是一个tablelayoutpanel。
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e){ switch (e.Row.RowType){ case DataControlRowType.Header://第一行表头 TableCellCollection tcHeader = e.Row.Cells;tcHeader.Clear();tcHeader.Add(new TableHeaderCell());tcHeader[0].Attributes.Add("rowspan", "3...
//其实是有选中的,只是没选中的背景色没设置Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor);//设置非选中的背景色 if (dataGridViewX1.Rows[e.RowIndex].Selected){ backColorBrush = new SolidBrush(Color.Blue);//设置选中的背景色 } e.Graphics.FillRectangle(backColorBrush,...