none
关于DataGridViewCheckBoxCell的用法 RRS feed

  • 问题

  • 有一个DataTable 传送过来数据,把里面的某些字段显示在 DataGridView里面,某一列 要显示成CheckBox的形式,应该使用
    DataGridViewCheckBoxCell 这个来动态创建,但是不知道怎么用,知道的麻烦给个代码。就是在DataGridView 动态显示DataTable里面的数据并且
    某一列要以CheckBox 的形式显示。
    2009年12月27日 13:01

答案

  • 你好!
         构造一个DataGridViewChekBoxCell实例,然后插入DataGridView中就可以了,具体可以参考:
    private void AddOutOfOfficeColumn()
    {
        DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
        {
            column.HeaderText = ColumnName.OutOfOffice.ToString();
            column.Name = ColumnName.OutOfOffice.ToString();
            column.AutoSizeMode = 
                DataGridViewAutoSizeColumnMode.DisplayedCells;
            column.FlatStyle = FlatStyle.Standard;
            column.ThreeState = true;
            column.CellTemplate = new DataGridViewCheckBoxCell();
            column.CellTemplate.Style.BackColor = Color.Beige;
        }
    
        DataGridView1.Columns.Insert(0, column);
    }
    

    周雪峰
    • 已标记为答案 scoket.joe 2009年12月28日 4:04
    2009年12月27日 16:56
    版主

全部回复

  • 你好!
         构造一个DataGridViewChekBoxCell实例,然后插入DataGridView中就可以了,具体可以参考:
    private void AddOutOfOfficeColumn()
    {
        DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
        {
            column.HeaderText = ColumnName.OutOfOffice.ToString();
            column.Name = ColumnName.OutOfOffice.ToString();
            column.AutoSizeMode = 
                DataGridViewAutoSizeColumnMode.DisplayedCells;
            column.FlatStyle = FlatStyle.Standard;
            column.ThreeState = true;
            column.CellTemplate = new DataGridViewCheckBoxCell();
            column.CellTemplate.Style.BackColor = Color.Beige;
        }
    
        DataGridView1.Columns.Insert(0, column);
    }
    

    周雪峰
    • 已标记为答案 scoket.joe 2009年12月28日 4:04
    2009年12月27日 16:56
    版主
  • 如果你要把datatable的某个布尔型字段与datagridview中的checkbox相对应进行绑定

    假定你的datagridview第一列为checkbox

    private void InitDataGridViewBind()
    {
        DataTable dtNew = new DataTable();
        dtNew = GlobalStatic.gs_myWS.MonitorGetUserIDInfo().Tables[0];

        this.dataGridView1.AutoGenerateColumns = false;
        this.dataGridView1.DataSource = dtNew;

         for(int i=0,i<dtNew.rows.count,i++)
        {
               this.dataGridView1.Rows[i].Cells[0].Value =  dtNew .Rows[i]["布尔列"];
            
        }
       
    }


    努力+方法=成功
    2009年12月28日 1:20
  • 你好:
      我也是这个思路。
      但是我需要 DataTable某一列 和 这个DataGridView里面的 CheckBox列邦定,主要是邦定这块不太清楚。
    比如一个DataTable 的Field1 Field2 2列 我需要 将Field1的内容显示到DataGridView的CheckBox这列。这样
    User可以在该列内 选择他们需要的内容。
    还有请问 ColumnName.OutOfOffice 这个是什么东西啊。
    2009年12月28日 1:32
  • 是枚举

    使用一个枚举提供了一些抽象在列索引
        和列名之间 伴随编译时检查,并给出
        一个方便的地方来存储列名。

    enum ColumnName
        {
            EmployeeId,
            LastName,
            FirstName,
            Title,
            TitleOfCourtesy,
            BirthDate,
            HireDate,
            Address,
            City,
            Region,
            PostalCode,
            Country,
            HomePhone,
            Extension,
            Photo,
            Notes,
            ReportsTo,
            PhotoPath,
            OutOfOffice
        };


    努力+方法=成功
    2009年12月28日 2:22