【解决马上结贴】如何用DataGridView实现这种效果?

annjoy303 2010-07-15 01:40:43


谢谢!!

...全文
254 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl194 2010-07-16
  • 打赏
  • 举报
回复
学习学习。
老Key 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wuyazhe 的回复:]
引用 4 楼 rqx110 的回复:
http://www.cnblogs.com/peterzb/archive/2009/05/29/1491891.html
自己改改就可以用了。

例子太棒了。学习。
[我几乎没使用过数据库。]囧~
[/Quote]呵呵。。设置一下风格就可以的。。。
兔子-顾问 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rqx110 的回复:]
http://www.cnblogs.com/peterzb/archive/2009/05/29/1491891.html
自己改改就可以用了。
[/Quote]
例子太棒了。学习。
[我几乎没使用过数据库。]囧~
ajq1989 2010-07-15
  • 打赏
  • 举报
回复

/// <summary>
/// 行列转换
/// </summary>
/// <param name= "dDataTable "> DataTable </param>
/// <returns> Return DataTable </returns>
public System.Data.DataTable DataTableRow2Col(System.Data.DataTable dt)
{
int iCol = dt.Columns.Count;
int iRow = dt.Rows.Count;
DataTable syllabus = new DataTable();

//创建对象表
object[,] myTable;
//初始化对象表的大小(直接将行列置换)
myTable = new object[iCol, iRow + 1];

//特殊应用
if (dt.TableName.ToUpper() == "xxx ")
{
//获取原列头名称
for (int ii = 0; ii < iCol; ii++)
{
myTable[ii, 0] = dt.Columns[ii].ColumnName;
}
//第一列的列头名称以及格式
syllabus.Columns.Add("序列 ", System.Type.GetType("System.String "));
}
else
{
//获取原列头名称
for (int ii = 0; ii < iCol; ii++)
{
myTable[ii, 0] = ii + 1;
}
//第一列的列头名称以及格式
syllabus.Columns.Add("序列 ", System.Type.GetType("System.Int32 "));
}
//行列数据转存
for (int i = 0; i < iCol; i++)
{
for (int ii = 0; ii < iRow; ii++)
{
myTable[i, ii + 1] = dt.Rows[ii][i];
}
}
//第二列的列头名称
syllabus.Columns.Add("次数 ", System.Type.GetType("System.Int32 "));
//其余列的列头名称(也就是原来的行,有多少行就有多少列)
for (int i = 0; i < iRow - 2; i++)
{
syllabus.Columns.Add(i.ToString());
}

//行到列的转换(包括原来的列名称和列对应的行上的数据)

//创建行到列的对象数组
object[] R2C;
//初始化对象数组的列(就是原行数,并且加上一,因为把原来的列头名称放为每一行的第一列了)
R2C = new object[iRow + 1];
//数据转置
for (int i = 0; i < iCol; i++)
{
//写入每一行的列数据
for (int ii = 0; ii < iRow + 1; ii++)
{
R2C[ii] = myTable[i, ii];
}
//写入表中
syllabus.Rows.Add((object[])R2C);
}
//返回表
return syllabus;
}
hyblusea 2010-07-15
  • 打赏
  • 举报
回复
谢谢小蕾MM, 你的头像还没换吗?

楼主, 我建议你还是用 PropertyGrid来做...
annjoy303 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ajq1989 的回复:]
左边的列是数据库的字段吗 ?
那要写个类来转。 最好在数据库完成转换.
[/Quote]

对,怎么转啊
-小蕾- 2010-07-15
  • 打赏
  • 举报
回复
顶,机器猫。。。
ajq1989 2010-07-15
  • 打赏
  • 举报
回复
左边的列是数据库的字段吗 ?
那要写个类来转。 最好在数据库完成转换.
hyblusea 2010-07-15
  • 打赏
  • 举报
回复

//
// dataGridView1
//
this.dataGridView1.BackgroundColor = System.Drawing.Color.Bisque;
this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.Bisque;
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2});
this.dataGridView1.GridColor = System.Drawing.Color.Bisque;
this.dataGridView1.Location = new System.Drawing.Point(55, 189);
this.dataGridView1.Name = "dataGridView1";
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.Bisque;
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(326, 190);
this.dataGridView1.TabIndex = 13;
//
// Column1
//
dataGridViewCellStyle2.BackColor = System.Drawing.Color.Bisque;
this.Column1.DefaultCellStyle = dataGridViewCellStyle2;
this.Column1.HeaderText = "Column1";
this.Column1.Name = "Column1";
//
// Column2
//
this.Column2.HeaderText = "Column2";
this.Column2.Name = "Column2";
hyblusea 2010-07-15
  • 打赏
  • 举报
回复

是不是这样?
chijun89 2010-07-15
  • 打赏
  • 举报
回复
I think it‘s a detailsview but not a datagridview
qlf2008 2010-07-15
  • 打赏
  • 举报
回复
就是更改第一列的风格就是了吧?
guojh021 2010-07-15
  • 打赏
  • 举报
回复
设置一下风格~
loveheye 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
莫非是设置dataGridView1.Rows[0].HeaderCell?
[/Quote]


帮顶 接分~~~
rqx110 2010-07-15
  • 打赏
  • 举报
回复
gxingmin 2010-07-15
  • 打赏
  • 举报
回复
用DataGridView,更改行头需要重绘
你可以把行头作为一个字段放到数据库里,然后绑定到DataGridView里,并把第一列背景设成会的
hyblusea 2010-07-15
  • 打赏
  • 举报
回复
真是服了你了,不就是设置一下风格吗?
兔子-顾问 2010-07-15
  • 打赏
  • 举报
回复
莫非是设置dataGridView1.Rows[0].HeaderCell?

110,576

社区成员

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

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

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