[原创]WinForm的DataGrid动态装载控件
来源:互联网 发布:2017重庆网络知识竞赛 编辑:程序博客网 时间:2024/06/13 04:30
做个项目,需要在DataGrid中动态加载CheckBox控件,偶是初学菜鸟,WebForm倒知道用模板列,到了Winform就蒙了于是在网上到处找关于Winform的模板列,然后逐渐认识DataGridTableStyle、ColumnStyle……由于本人资质平庸,花了大半天的时间有点了眉目,以下全属经验总结,请大家不要笑偶,不过欢迎批评指正……
我用偶认为最简单的方法做偶的经验总结,其实加载控件有N多种方法,偶列出两种共大家选择,简单易懂:
第一种:
WindowsDisplayBLL myWdb=new WindowsDisplayBLL();
DataTable myDt=myWdb.DisplayMedicamentDataSet.Tables[0];//把DataSet里要用到的表放到myDt表里便于操作
//创建个CheckBox列,HeaderText为"选择",类型为Boolean,默认值为false,然后添加到myDt表
//这样定义就是保证在显示DataGrid时可以与数据同时显示,而不是你用鼠标点击一下才会显示
DataColumn dcCheck=new DataColumn("选择");
dcCheck.DataType=Type.GetType("System.Boolean");
dcCheck.DefaultValue=false;
myDt.Columns.Add(dcCheck);
//这会表里本来有5个字段,加上这个新加入的CheckBox就变成6个字段了,根据字段个数决定DataGridTableStyle的定义个数,这样保证你表中所有的字段都会完全显示
//加DataGridTableStyle,注意与Table的对应关系!
DataGridTableStyle dgStyle=new DataGridTableStyle();
dgStyle.MappingName=myDt.TableName;
DataGridColumnStyle dg_id=new DataGridTextBoxColumn();
dg_id.MappingName="m_id";
dg_id.HeaderText="编号";
dg_id.Width=50;
DataGridColumnStyle dg_type=new DataGridTextBoxColumn();
dg_type.MappingName="m_type";
dg_type.HeaderText="类型";
dg_type.Width=100;
DataGridColumnStyle dg_name=new DataGridTextBoxColumn();
dg_name.MappingName="m_name";
dg_name.HeaderText="名称";
dg_id.Width=60;
DataGridColumnStyle dg_qid=new DataGridTextBoxColumn();
dg_qid.MappingName="m_qid";
dg_qid.HeaderText="计量ID";
dg_qid.Width=60;
DataGridColumnStyle dg_unit=new DataGridTextBoxColumn();
dg_unit.MappingName="m_unit";
dg_unit.HeaderText="计量单位ID";
dg_unit.Width=50;
DataGridColumnStyle dg_bool=new DataGridBoolColumn();//此处定义的Bool型就是CheckBox的位置
dg_bool.MappingName="选择";
dg_bool.HeaderText="布尔值";
dg_bool.Width=50;
DataGridColumnStyle[] dgColumn=new DataGridColumnStyle[6]{dg_id,dg_type,dg_name,dg_qid,dg_unit,dg_bool};//这里的dgColumn数量是和以上定义的DataGridColumnStyle对应的
dgStyle.GridColumnStyles.AddRange(dgColumn);
dgMedicamentList.TableStyles.Add(dgStyle);
dgMedicamentList.DataSource=myDt;
第二种:
WindowsDisplayBLL myWdb=new WindowsDisplayBLL();
DataTable myDt=myWdb.DisplayMedicamentDataSet.Tables[0];
//偶把这里注释了,因为这是第一种的方法,其余的全一样!!
// DataColumn dcCheck=new DataColumn("选择");
// dcCheck.DataType=Type.GetType("System.String");
// dcCheck.DefaultValue="Button";
// myDt.Columns.Add(dcCheck);
//加DataGridTableStyle,注意与Table的对应关系!
DataGridTableStyle dgStyle=new DataGridTableStyle();
dgStyle.MappingName=myDt.TableName;
DataGridColumnStyle dg_id=new DataGridTextBoxColumn();
dg_id.MappingName="m_id";
dg_id.HeaderText="编号";
dg_id.Width=50;
DataGridColumnStyle dg_type=new DataGridTextBoxColumn();
dg_type.MappingName="m_type";
dg_type.HeaderText="类型";
dg_type.Width=100;
DataGridColumnStyle dg_name=new DataGridTextBoxColumn();
dg_name.MappingName="m_name";
dg_name.HeaderText="名称";
dg_id.Width=60;
DataGridColumnStyle dg_qid=new DataGridTextBoxColumn();
dg_qid.MappingName="m_qid";
dg_qid.HeaderText="计量ID";
dg_qid.Width=60;
DataGridColumnStyle dg_unit=new DataGridTextBoxColumn();
dg_unit.MappingName="m_unit";
dg_unit.HeaderText="计量单位ID";
dg_unit.Width=50;
DataGridColumnStyle dg_bool=new DataGridTextBoxColumn();
dg_bool.MappingName="选择";
dg_bool.HeaderText="Button";
dg_bool.Width=50;
DataGridColumnStyle[] dgColumn=new DataGridColumnStyle[6]{dg_id,dg_type,dg_name,dg_qid,dg_unit,dg_bool};
dgStyle.GridColumnStyles.AddRange(dgColumn);
dgMedicamentList.TableStyles.Add(dgStyle);
dgMedicamentList.DataSource=myDt;
//这里是第二种方法的精华啊!!区别第一种方法,这种方法就是你要用鼠标点击一下才显示哦
DataGridTextBoxColumn dgtbc=(DataGridTextBoxColumn)dgMedicamentList.TableStyles[0].GridColumnStyles[0];//这里定义的列号
CheckBox mycb=new CheckBox();
mycb.Dock=DockStyle.Fill;
mycb.Text="";
dgtbc.TextBox.Controls.Add(mycb);
我用偶认为最简单的方法做偶的经验总结,其实加载控件有N多种方法,偶列出两种共大家选择,简单易懂:
第一种:
WindowsDisplayBLL myWdb=new WindowsDisplayBLL();
DataTable myDt=myWdb.DisplayMedicamentDataSet.Tables[0];//把DataSet里要用到的表放到myDt表里便于操作
//创建个CheckBox列,HeaderText为"选择",类型为Boolean,默认值为false,然后添加到myDt表
//这样定义就是保证在显示DataGrid时可以与数据同时显示,而不是你用鼠标点击一下才会显示
DataColumn dcCheck=new DataColumn("选择");
dcCheck.DataType=Type.GetType("System.Boolean");
dcCheck.DefaultValue=false;
myDt.Columns.Add(dcCheck);
//这会表里本来有5个字段,加上这个新加入的CheckBox就变成6个字段了,根据字段个数决定DataGridTableStyle的定义个数,这样保证你表中所有的字段都会完全显示
//加DataGridTableStyle,注意与Table的对应关系!
DataGridTableStyle dgStyle=new DataGridTableStyle();
dgStyle.MappingName=myDt.TableName;
DataGridColumnStyle dg_id=new DataGridTextBoxColumn();
dg_id.MappingName="m_id";
dg_id.HeaderText="编号";
dg_id.Width=50;
DataGridColumnStyle dg_type=new DataGridTextBoxColumn();
dg_type.MappingName="m_type";
dg_type.HeaderText="类型";
dg_type.Width=100;
DataGridColumnStyle dg_name=new DataGridTextBoxColumn();
dg_name.MappingName="m_name";
dg_name.HeaderText="名称";
dg_id.Width=60;
DataGridColumnStyle dg_qid=new DataGridTextBoxColumn();
dg_qid.MappingName="m_qid";
dg_qid.HeaderText="计量ID";
dg_qid.Width=60;
DataGridColumnStyle dg_unit=new DataGridTextBoxColumn();
dg_unit.MappingName="m_unit";
dg_unit.HeaderText="计量单位ID";
dg_unit.Width=50;
DataGridColumnStyle dg_bool=new DataGridBoolColumn();//此处定义的Bool型就是CheckBox的位置
dg_bool.MappingName="选择";
dg_bool.HeaderText="布尔值";
dg_bool.Width=50;
DataGridColumnStyle[] dgColumn=new DataGridColumnStyle[6]{dg_id,dg_type,dg_name,dg_qid,dg_unit,dg_bool};//这里的dgColumn数量是和以上定义的DataGridColumnStyle对应的
dgStyle.GridColumnStyles.AddRange(dgColumn);
dgMedicamentList.TableStyles.Add(dgStyle);
dgMedicamentList.DataSource=myDt;
第二种:
WindowsDisplayBLL myWdb=new WindowsDisplayBLL();
DataTable myDt=myWdb.DisplayMedicamentDataSet.Tables[0];
//偶把这里注释了,因为这是第一种的方法,其余的全一样!!
// DataColumn dcCheck=new DataColumn("选择");
// dcCheck.DataType=Type.GetType("System.String");
// dcCheck.DefaultValue="Button";
// myDt.Columns.Add(dcCheck);
//加DataGridTableStyle,注意与Table的对应关系!
DataGridTableStyle dgStyle=new DataGridTableStyle();
dgStyle.MappingName=myDt.TableName;
DataGridColumnStyle dg_id=new DataGridTextBoxColumn();
dg_id.MappingName="m_id";
dg_id.HeaderText="编号";
dg_id.Width=50;
DataGridColumnStyle dg_type=new DataGridTextBoxColumn();
dg_type.MappingName="m_type";
dg_type.HeaderText="类型";
dg_type.Width=100;
DataGridColumnStyle dg_name=new DataGridTextBoxColumn();
dg_name.MappingName="m_name";
dg_name.HeaderText="名称";
dg_id.Width=60;
DataGridColumnStyle dg_qid=new DataGridTextBoxColumn();
dg_qid.MappingName="m_qid";
dg_qid.HeaderText="计量ID";
dg_qid.Width=60;
DataGridColumnStyle dg_unit=new DataGridTextBoxColumn();
dg_unit.MappingName="m_unit";
dg_unit.HeaderText="计量单位ID";
dg_unit.Width=50;
DataGridColumnStyle dg_bool=new DataGridTextBoxColumn();
dg_bool.MappingName="选择";
dg_bool.HeaderText="Button";
dg_bool.Width=50;
DataGridColumnStyle[] dgColumn=new DataGridColumnStyle[6]{dg_id,dg_type,dg_name,dg_qid,dg_unit,dg_bool};
dgStyle.GridColumnStyles.AddRange(dgColumn);
dgMedicamentList.TableStyles.Add(dgStyle);
dgMedicamentList.DataSource=myDt;
//这里是第二种方法的精华啊!!区别第一种方法,这种方法就是你要用鼠标点击一下才显示哦
DataGridTextBoxColumn dgtbc=(DataGridTextBoxColumn)dgMedicamentList.TableStyles[0].GridColumnStyles[0];//这里定义的列号
CheckBox mycb=new CheckBox();
mycb.Dock=DockStyle.Fill;
mycb.Text="";
dgtbc.TextBox.Controls.Add(mycb);
- [原创]WinForm的DataGrid动态装载控件
- [原创]动态生成DataGrid的列
- WinForm动态菜单原创
- java applet 动态装载控件
- [原创]ASP.net下DataGrid的单项选择控件
- [原创]ASP.net下DataGrid的单项选择控件
- Winform动态添加控件
- Winform DataGrid设计三步曲之一-----DataGrid如何动态实现多种风格(TableStyle)之间的转换
- [原创]使用datagrid控件显示数据
- WinForm DataGrid 的DataGridTableStyle用法
- WinForm DataGrid 的DataGridTableStyle用法
- 可以动态添加行背景色的flex datagrid控件
- 动态装载问题的研究
- 动态装载问题的研究
- 动态装载问题的研究
- 动态装载问题的研究
- 动态装载问题的研究
- C# WinForm 动态添加控件
- 收集:一个研究生毕业以后的人生规划
- 纵向显示N-UP类型的数据窗口
- 常见 Datagrid 错误
- SQLServer的几个技巧
- 编程语言平台选择
- [原创]WinForm的DataGrid动态装载控件
- 似是故人来
- 今天是妇女节,我的blog开张了
- mysql 中如何添加用户
- X与Y
- apache+tomcat+jk+php配置手册
- 又来一次
- wParam 和 lParam
- skill