dataGridView 单击主标头排序或单击后收缩子标头
我写的代码可以实现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);
}