我写的代码可以实现dataGridView 像TreeView样能展开收缩(可折叠) (比如 一列中主标头 单位 子标头是福州公司,上海公司)但是点下福州公司下的数据再点下“单位”主标头, 那些福州公司下的数据无法折叠 直接串到第二行。 有没办法当单击“单位”时候 能把福州公司下的数据折叠,或者 禁止点击“单位”标头。 小弟水平有限请高手补充几行代码实现. 谢谢!
public Form1()
{
InitializeComponent();
DataGridViewColumn column = new DataGridViewTextBoxColumn();
column.HeaderText = "单位";
collapseDataGridView1.Columns.Insert(0,column); column = new DataGridViewTextBoxColumn();
column.HeaderText = "联系人";
collapseDataGridView1.Columns.Insert(1, column); column = new DataGridViewTextBoxColumn();
column.HeaderText = "销售额";
collapseDataGridView1.Columns.Insert(2, column); } private void Form1_Load(object sender, EventArgs e)
{
InitDataGridView(this.collapseDataGridView1);
}
private void InitDataGridView(DataGridView dgv)
{
/*第一行可折叠行*/
CollapseDataGridViewRow collapseRow = new CollapseDataGridViewRow();
collapseRow.IsCollapse = true; DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
cell.Value = "福州01科技有限公司";
collapseRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "王小二";
collapseRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "10000.0000";
collapseRow.Cells.Add(cell); /*第二行可折叠行*/
CollapseDataGridViewRow collapseRow2 = new CollapseDataGridViewRow();
collapseRow2.IsCollapse = true; DataGridViewTextBoxCell cell2 = new DataGridViewTextBoxCell();
cell2.Value = "国横有限公司";
collapseRow2.Cells.Add(cell2); cell2 = new DataGridViewTextBoxCell();
cell2.Value = "张国";
collapseRow2.Cells.Add(cell2); cell2 = new DataGridViewTextBoxCell();
cell2.Value = "10000.0000";
collapseRow2.Cells.Add(cell2); /*第三行可折叠行*/
CollapseDataGridViewRow collapseRow3 = new CollapseDataGridViewRow();
collapseRow3.IsCollapse = true; DataGridViewTextBoxCell cell3 = new DataGridViewTextBoxCell();
cell3.Value = "飞鸿有限公司";
collapseRow3.Cells.Add(cell3); cell3 = new DataGridViewTextBoxCell();
cell3.Value = "陈宝";
collapseRow3.Cells.Add(cell3); cell3 = new DataGridViewTextBoxCell();
cell3.Value = "60000.0000";
collapseRow3.Cells.Add(cell3);
/*子行的行头标题*/
DataGridViewRow headerRow = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = "订单号";
headerRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "订单日期";
headerRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "订单金额";
headerRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "业务员";
headerRow.Cells.Add(cell);
//将标题行添加至可折叠行的子行中
collapseRow.Rows.Add(headerRow);
collapseRow2.Rows.Add(headerRow);
DataGridViewRow dataRow3 = new DataGridViewRow();
cell3 = new DataGridViewTextBoxCell();
cell3.Value = "XSDD075503";
dataRow3.Cells.Add(cell3);
collapseRow3.Rows.Add(headerRow);
collapseRow3.Rows.Add(dataRow3);
for (int i = 0; i < 5; i++)
{
DataGridViewRow dataRow = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = "XSDD075501" + i.ToString();
dataRow.Cells.Add(cell);
cell = new DataGridViewTextBoxCell();
cell.Value = "2011-4-1" + i.ToString();
dataRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = i * 1000;
dataRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "SZMMY0755";
dataRow.Cells.Add(cell);
//将订单的数据行添加至可折叠行的子行中
collapseRow.Rows.Add(dataRow); collapseRow2.Rows.Add(dataRow); } //将可折叠的行添加至GridView
dgv.Rows.Add(collapseRow);
dgv.Rows.Add(collapseRow2);
dgv.Rows.Add(collapseRow3);
}
public Form1()
{
InitializeComponent();
DataGridViewColumn column = new DataGridViewTextBoxColumn();
column.HeaderText = "单位";
collapseDataGridView1.Columns.Insert(0,column); column = new DataGridViewTextBoxColumn();
column.HeaderText = "联系人";
collapseDataGridView1.Columns.Insert(1, column); column = new DataGridViewTextBoxColumn();
column.HeaderText = "销售额";
collapseDataGridView1.Columns.Insert(2, column); } private void Form1_Load(object sender, EventArgs e)
{
InitDataGridView(this.collapseDataGridView1);
}
private void InitDataGridView(DataGridView dgv)
{
/*第一行可折叠行*/
CollapseDataGridViewRow collapseRow = new CollapseDataGridViewRow();
collapseRow.IsCollapse = true; DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
cell.Value = "福州01科技有限公司";
collapseRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "王小二";
collapseRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "10000.0000";
collapseRow.Cells.Add(cell); /*第二行可折叠行*/
CollapseDataGridViewRow collapseRow2 = new CollapseDataGridViewRow();
collapseRow2.IsCollapse = true; DataGridViewTextBoxCell cell2 = new DataGridViewTextBoxCell();
cell2.Value = "国横有限公司";
collapseRow2.Cells.Add(cell2); cell2 = new DataGridViewTextBoxCell();
cell2.Value = "张国";
collapseRow2.Cells.Add(cell2); cell2 = new DataGridViewTextBoxCell();
cell2.Value = "10000.0000";
collapseRow2.Cells.Add(cell2); /*第三行可折叠行*/
CollapseDataGridViewRow collapseRow3 = new CollapseDataGridViewRow();
collapseRow3.IsCollapse = true; DataGridViewTextBoxCell cell3 = new DataGridViewTextBoxCell();
cell3.Value = "飞鸿有限公司";
collapseRow3.Cells.Add(cell3); cell3 = new DataGridViewTextBoxCell();
cell3.Value = "陈宝";
collapseRow3.Cells.Add(cell3); cell3 = new DataGridViewTextBoxCell();
cell3.Value = "60000.0000";
collapseRow3.Cells.Add(cell3);
/*子行的行头标题*/
DataGridViewRow headerRow = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = "订单号";
headerRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "订单日期";
headerRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "订单金额";
headerRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "业务员";
headerRow.Cells.Add(cell);
//将标题行添加至可折叠行的子行中
collapseRow.Rows.Add(headerRow);
collapseRow2.Rows.Add(headerRow);
DataGridViewRow dataRow3 = new DataGridViewRow();
cell3 = new DataGridViewTextBoxCell();
cell3.Value = "XSDD075503";
dataRow3.Cells.Add(cell3);
collapseRow3.Rows.Add(headerRow);
collapseRow3.Rows.Add(dataRow3);
for (int i = 0; i < 5; i++)
{
DataGridViewRow dataRow = new DataGridViewRow();
cell = new DataGridViewTextBoxCell();
cell.Value = "XSDD075501" + i.ToString();
dataRow.Cells.Add(cell);
cell = new DataGridViewTextBoxCell();
cell.Value = "2011-4-1" + i.ToString();
dataRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = i * 1000;
dataRow.Cells.Add(cell); cell = new DataGridViewTextBoxCell();
cell.Value = "SZMMY0755";
dataRow.Cells.Add(cell);
//将订单的数据行添加至可折叠行的子行中
collapseRow.Rows.Add(dataRow); collapseRow2.Rows.Add(dataRow); } //将可折叠的行添加至GridView
dgv.Rows.Add(collapseRow);
dgv.Rows.Add(collapseRow2);
dgv.Rows.Add(collapseRow3);
}
解决方案 »
- 实时监控TXT文件,TXT新增行导入数据库,怎么实现
- .net中怎么把视频显示出来,急!!!
- C#实现深复制有几种方法?
- 怎么利用AdventNet SNMP API .NET做一个简单的对代理端的trap收发?
- Remoting 将窗体序列化后,在客户show出来。
- 服务器上没法打开OleDbConnection这个连接
- 郁闷啊,如何实现进程间的共享内存?
- 点击Datagrid 的编辑按钮时,如何控制所要编辑的列所输入的数据的类型?
- *****VSS管理高手来一下吧!!!!!*****
- 怎样做一个像sql server 2000生成视图时 那种选完表后,个各表之间可以拖动,而且可以互相联系。
- 由于安全限制无法访问类型 System.Runtime.Remoting.ObjRef
- vs2008
int j =(int)dgv.Columns.Count;
for (int k = 0; k < j; k++)
{ dgv.Columns[k].SortMode = DataGridViewColumnSortMode.NotSortable; }禁止主标头点击可以成功了。 要是不用禁止主标头 使子标头下的行能自动折叠 如何实现?? 我自己在做做看 有哪个人懂这点小技术的 教我下
可以吗,能否给我一点代码[email protected]