FarPoint.Win.Spread 自定义表头
软件开发技术交流,同学习共进步,欢迎加群, 群号:169600532
最近C/S项目中用到FarPoint.Win.Spread,想在表头加个全选的checkbox,实现效果如图:
列的设置大家都清楚,直接可视化视图中设置该列CellType为CheckBox类型即可
表头的设置就需要费些周折了。一般是在加载时code,代码:
1 //设置行表头 2 FarPoint.Win.Spread.CellType.CheckBoxCellType celltype = new FarPoint.Win.Spread.CellType.CheckBoxCellType(); 3 celltype.Caption = "全选"; 4 spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].CellType = celltype; 5 spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].Text = "False";
由于我要把全选放在第一行,所以固定为【0,0】
然后需要给这个CheckBox定义点击事件,一般事件就是该控件的CellClick事件,详细代码如下:
1 private void spdPrintInfo_CellClick(object sender, CellClickEventArgs e) 2 { 3 if (e.Column == 0) 4 { 5 if (e.ColumnHeader) 6 { 7 if (spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].Text == "False") 8 { 9 spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].Text = "True"; 10 int rowcount = spdPrintInfo_Sheet1.RowCount; 11 for (int i = 0; i < rowcount; i++) 12 { 13 spdPrintInfo_Sheet1.Cells[i, 0].Text = "True"; 14 } 15 } 16 else 17 { 18 spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].Text = "False"; 19 int rowcount = spdPrintInfo_Sheet1.RowCount; 20 for (int i = 0; i < rowcount; i++) 21 { 22 spdPrintInfo_Sheet1.Cells[i, 0].Text = "False"; 23 } 24 } 25 } 26 else 27 { 28 if (spdPrintInfo_Sheet1.Cells[e.Row, 0].Text == "False") 29 { 30 bool allCheck = true; 31 spdPrintInfo_Sheet1.Cells[e.Row, 0].Text = "True"; 32 for (int i = 0; i < spdPrintInfo_Sheet1.RowCount; i++) 33 { 34 if (spdPrintInfo_Sheet1.Cells[i, 0].Text == "False") 35 { 36 allCheck = false; 37 break; 38 } 39 } 40 if (allCheck) 41 { 42 spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].Text = "True"; 43 } 44 } 45 else 46 { 47 spdPrintInfo_Sheet1.Cells[e.Row, 0].Text = "False"; 48 //将表头也设置为不勾选 49 spdPrintInfo_Sheet1.ColumnHeader.Cells[0, 0].Text = "False"; 50 } 51 } 52 } 53 }
如此,自己coding的全选就完成了,方法不是最好的,欢迎大家指正或建议更高效、简单的方法。
软件开发技术交流,同学习共进步,欢迎加群, 群号:169600532