【解决马上结贴】如何用DataGridView实现这种效果? 谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 莫非是设置dataGridView1.Rows[0].HeaderCell? 用DataGridView,更改行头需要重绘你可以把行头作为一个字段放到数据库里,然后绑定到DataGridView里,并把第一列背景设成会的 http://www.cnblogs.com/peterzb/archive/2009/05/29/1491891.html自己改改就可以用了。 I think it‘s a detailsview but not a datagridview // // 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"; 谢谢小蕾MM, 你的头像还没换吗?楼主, 我建议你还是用 PropertyGrid来做... /// <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; } C# 程序题 急 c# string类型对应delphi的什么类型 请教 SendKeys.Send()的问题 麻烦大家看看这段程序哪里错了呀 请教国内外有名的C#论坛 c# 浏览器 关于反序列化的问题 对dataSet的操作问题 ×××××求一个字符写入记事本的东东,谢谢!!!!××××× 数据库引用报错,急! 急!获取checkbox的多个值问题 怎样在winform下做一个类似IE7 的在新选项卡中打开链接
你可以把行头作为一个字段放到数据库里,然后绑定到DataGridView里,并把第一列背景设成会的
自己改改就可以用了。
//
// 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";
/// <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;
}