最新做一个项目,DataGrid中添加一个checkbox,在asp.net中可以用模板列,请问一下,在winform中,通过什么方式通过达到同样的效果!

解决方案 »

  1.   

    重写DataGridColumnStyle查下这个关键字的MSDN
      

  2.   

    How can I put a checkbox in a column of my DataGrid?http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q754q
      

  3.   

    //给一段显示例子///创建填充数据的表结构
    tbSourceTable = new DataTable ("table_Person");
    string[] strTitles = new string [3]{"姓名","学历","职务"};
    DataColumn colTextColumn = null;
    //创建前面三列,全部是字符串类型,第一列列名为"姓名",第二列为“学历”,第三列“职务”
    for(int i=0;i<3;i++)
    {
    colTextColumn = new DataColumn(strTitles[i]);
    colTextColumn.DataType = Type.GetType("System.String");
    colTextColumn.DefaultValue = "";
    tbSourceTable.Columns.Add(colTextColumn); 
    }
    //创建第四列,Bool类型,列名"在职"
    DataColumn colBoolColumn = new DataColumn("在职");
    colBoolColumn.DataType = System.Type.GetType("System.Boolean");
    colBoolColumn.DefaultValue = false;
    tbSourceTable.Columns.Add(colBoolColumn);///创建表结构结束dbgNewGrid.DataSource = tbSourceTable; //指定DataGrid数据源
    if(!dbgNewGrid.TableStyles.Contains("Style_Person"))//为定义的DataGrid取名"Style_Person"
    {
    //定制DataGridTableStyle,用于整个DataGrid
    DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
    dgdtblStyle.MappingName = tbSourceTable.TableName;
    dbgNewGrid.TableStyles.Add(dgdtblStyle);
    dgdtblStyle.RowHeadersVisible = false;
    dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;
    dgdtblStyle.AllowSorting = false;
    dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);
    dgdtblStyle.RowHeadersVisible = false;
    dgdtblStyle.HeaderForeColor = Color.White;
    dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F, 
    System.Drawing.FontStyle.Bold, 
    System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
    dgdtblStyle.GridLineColor = Color.DarkGray;
    dgdtblStyle.PreferredRowHeight = 22;
    dbgNewGrid.BackgroundColor = Color.White;
    //定制DataGridTableStyle结束
    //通过GridColumnStyles设置列属性,以下设置列的宽度 
    GridColumnStylesCollection colStyle = dbgNewGrid.TableStyles[0].GridColumnStyles;
    colStyle[0].Width = 50;//姓名
    colStyle[1].Width = 100;//学历
    colStyle[2].Width = 50;//职务
    colStyle[3].Width = 40;//是否在职
    }
    //下面定制“学历”列,这里若要定制其他列可以修改GridColumnStyles[1]中的数值
    DataGridTextBoxColumn dgTextBoxColumn = (DataGridTextBoxColumn)dbgNewGrid.TableStyles[0].GridColumnStyles[1]; 
    //定制为ComboBox类型,若想定义成其他类型的可以在这里定制
    ComboBox dgComboBoxColumn = new ComboBox();
    dgComboBoxColumn.Items.AddRange(new object[]{"本科","硕士","博士"});//添加选项
    dgComboBoxColumn.Cursor = Cursors.Arrow;
    dgComboBoxColumn.DropDownStyle= ComboBoxStyle.DropDownList;
    dgComboBoxColumn.Dock = DockStyle.Fill;
    ///在选定项发生更改并且提交了该更改后发生dgComboBoxColumn.SelectionChangeCommitted += new  EventHandler(dgComboBoxColumn_SelectionChangeCommitted); 
    ///把ComboBox添加到DataGridTableStyle的第一列
    ///在原来微软默认的TextBox控件里面添加入你所定义的控件
    dgTextBoxColumn.TextBox.Controls.Add(dgComboBoxColumn);