我想在DataGrid中插入第一列作为选择列,这是我的代码,为什么显示不出来?
DataGridBoolColumn的MapingName属性是不是一定要,我这里只是作为选择标记,并不需要影射到某一列上,应该怎么做,看了很多文章都不行,高手救我!!!!DataGridTableStyle ts = new DataGridTableStyle();

DataGridTextBoxColumn aColumnTextColumn;
DataGrid1.DataSource = dtGrid;
ts.MappingName = dtGrid.TableName;
int numCols = dtGrid.Columns.Count;
DataGrid1.CaptionText = "生产计划列表"; DataGridColumnStyle dcSelect = new DataGridBoolColumn();
dcSelect.HeaderText = "选择";
dcSelect.MappingName = "";
//dcSelect.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
dcSelect.Width = 50;
//dcSelect.AllowNull = false;
ts.GridColumnStyles.Add(dcSelect);

解决方案 »

  1.   

    主要是这几句:
    DataGridColumnStyle dcSelect = new DataGridBoolColumn();
    dcSelect.HeaderText = "选择";
    dcSelect.MappingName = "";
    //dcSelect.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
    dcSelect.Width = 50;
    //dcSelect.AllowNull = false;
    ts.GridColumnStyles.Add(dcSelect);所有列定义完之后,还有这句:
    DataGrid1.TableStyles.Add(ts);所以应该是DataGridBoolColumn没有定义好,应该是怎么回事,谢谢!
      

  2.   

    LZ这种插入方式更方便些:
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        if ((e.Item.ItemType == ListItemType.Item) || 
        (e.Item.ItemType == ListItemType.AlternatingItem) || 
        (e.Item.ItemType == ListItemType.SelectedItem) )  
        {
             CheckBox cb ;
             //加选择框
             cb = new CheckBox();
    e.Item.Cells[0].Controls.Add(cb);
    }
      

  3.   

    怎么没有这个事件呢?
    ItemDataBound
      

  4.   

    参考我以前做的嵌入datetimePicker
    aColumnTextColumn.Width = 100;
    DateTimePicker dtp = new DateTimePicker();
    dtp.Dock= DockStyle.Fill;
    dtp.Cursor= Cursors.Arrow;
    dtp.ValueChanged+=new EventHandler(this.dtg_ValueChanged);//日期获取变化
    aColumnTextColumn.TextBox.Controls.Add(dtp);
      

  5.   

    aColumnTextColumn.Width = 100;
    DateTimePicker dtp = new DateTimePicker();
    dtp.Dock= DockStyle.Fill;
    dtp.Cursor= Cursors.Arrow;
    dtp.ValueChanged+=new EventHandler(this.dtg_ValueChanged);//日期获取变化
    aColumnTextColumn.TextBox.Controls.Add(dtp);
    =============================================================================
    这样和那个有一点区别,这个是填充值,那个是这一列根本显示不出来,应该怎么做,请指教:)
      

  6.   

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

  7.   

    myDb db1 = new myDb() ;
    DataTable dtGrid = db1.ExecuteToDataTable(strSQL) ;

    //=======================================
    DataGridTableStyle ts = new DataGridTableStyle();

    DataGridTextBoxColumn aColumnTextColumn;
    DataGrid1.DataSource = dtGrid;
    ts.MappingName = dtGrid.TableName;
    int numCols = dtGrid.Columns.Count;
    DataGrid1.CaptionText = "生产计划列表"; DataGridColumnStyle dcSelect = new DataGridBoolColumn();
    dcSelect.HeaderText = "选择";
    dcSelect.MappingName = "";//是不是这里的问题
    dcSelect.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
    dcSelect.Width = 50;
    dcSelect.AllowNull = false;
    ts.GridColumnStyles.Add(dcSelect); int loopFlag = 0;
    while (loopFlag < numCols)
    {
    aColumnTextColumn = new DataGridTextBoxColumn();
    switch (loopFlag)
    {
    case 0 :
    aColumnTextColumn.HeaderText = "编号";
    aColumnTextColumn.Width = 50;
    break;
    case 1 :
    aColumnTextColumn.HeaderText = "市场名称";
    aColumnTextColumn.Width = 200;
    break;
    case 2 :
    aColumnTextColumn.HeaderText = "档位号码";
    aColumnTextColumn.Width = 80;
    break;
              //其他的省略了
    }
    aColumnTextColumn.NullText = "";
    aColumnTextColumn.ReadOnly = true;
    aColumnTextColumn.Alignment=System.Windows.Forms.HorizontalAlignment.Center;
    aColumnTextColumn.MappingName = dtGrid.Columns[loopFlag].ColumnName;
    ts.GridColumnStyles.Add(aColumnTextColumn);
    loopFlag++;
    } DataGrid1.TableStyles.Add(ts);
      

  8.   

    myDb db1 = new myDb() ;
    DataTable dtGrid = db1.ExecuteToDataTable(strSQL) ;
    DataGridTableStyle ts = new DataGridTableStyle();

    DataGridTextBoxColumn aColumnTextColumn;
    DataGrid1.DataSource = dtGrid;
    ts.MappingName = dtGrid.TableName;
    int numCols = dtGrid.Columns.Count;
    DataGrid1.CaptionText = "生产计划列表";DataGridColumnStyle dcSelect = new DataGridBoolColumn();
    dcSelect.HeaderText = "选择";
    dcSelect.MappingName = "";
    dcSelect.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
    dcSelect.Width = 50;
    dcSelect.AllowNull = false;
    ts.GridColumnStyles.Add(dcSelect);int loopFlag = 0;
    while (loopFlag < numCols)
    {
    aColumnTextColumn = new DataGridTextBoxColumn();
    switch (loopFlag)
    {
    case 0 :
    aColumnTextColumn.HeaderText = "编号";
    aColumnTextColumn.Width = 50;
    break;
    case 1 :
    aColumnTextColumn.HeaderText = "市场名称";
    aColumnTextColumn.Width = 200;
    break;
    case 2 :
    //其他的省略了
    }
    aColumnTextColumn.NullText = "";
    aColumnTextColumn.ReadOnly = true;
    aColumnTextColumn.Alignment=System.Windows.Forms.HorizontalAlignment.Center;
    aColumnTextColumn.MappingName = dtGrid.Columns[loopFlag].ColumnName;
    ts.GridColumnStyles.Add(aColumnTextColumn);
    loopFlag++;
    }DataGrid1.TableStyles.Add(ts);
      

  9.   

    如果直接向DataGrid种进行插入,不设置Mapping是不行的。替换做法,你创建一个临时列,用于显示Checkbox,而且这也不麻烦。
      

  10.   

    myDb db1 = new myDb() ;
    DataTable dtGrid = db1.ExecuteToDataTable(strSQL) ; DataColumn checkCol = new DataColumn();
    checkCol.ColumnName = "CheckState";
    checkCol.DefaultValue = "0";
    checkCol.AllowDBNull = false;

    dtGrid.Columns.Add(checkCol);
    //=======================================
    DataGridTableStyle ts = new DataGridTableStyle();

    DataGridTextBoxColumn aColumnTextColumn;
    DataGrid1.DataSource = dtGrid;
    ts.MappingName = dtGrid.TableName;
    int numCols = dtGrid.Columns.Count;
    DataGrid1.CaptionText = "生产计划列表"; DataGridColumnStyle dcSelect = new DataGridBoolColumn();
    dcSelect.HeaderText = "选择";
    dcSelect.MappingName = "CheckState";
    dcSelect.Alignment = System.Windows.Forms.HorizontalAlignment.Center;
    dcSelect.Width = 50;
    ((DataGridBoolColumn)dcSelect).AllowNull = false;
    dcSelect.
    ts.GridColumnStyles.Add(dcSelect);
    ===============================================================================
    我这样做了之后,出来是出来了,为什么都是默认选中的灰色,而且点一下就会自动生成一个空的行,点一下多一个