.net winform编程中,如何在datagrid列中添加一个button.就是像WebFrom中的模板列里添加功能按钮.谢谢. 
 我没做过winFrom的东西,今天一看winfrom的datagrid跟webForm的完全不是样.晕了. 
 急。。

解决方案 »

  1.   

    直接添加列以后设置一下就OK了.这一列.celltype=button.
      

  2.   

    我这里我自己写的在datagrid添加ComboBox和DateTimerPick的代码:
    //向DataGrid中添加ComboBox和DateTimerPicker
    private void PopulateGrid(DataTable dt)
    {
    DataGridTableStyle DgStyle = new DataGridTableStyle();
    DgStyle.MappingName = dt.TableName;
    this.dataGrid1.TableStyles.Add(DgStyle);
    DgStyle.RowHeadersVisible = true; DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[7];
    ComboBox cmb = new ComboBox();
    cmb.Cursor = Cursors.Arrow;
    cmb.Dock = DockStyle.Fill;
                
    DataGridTextBoxColumn dgtb0 = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1];
                DateTimePicker dtime = new DateTimePicker();
    dtime.Cursor = Cursors.Arrow;
    dtime.Dock = DockStyle.Fill;
    dgtb0.TextBox.Controls.Add(dtime);
    dtime.ValueChanged +=new EventHandler(dtime_ValueChanged);
        
                Base bb = new Base(); string str1 = "select * from SectionInfo";
    DataTable table1 = new DataTable();
    table1 = bb.ExeSQLdt(str1); DataGridTextBoxColumn dgtb1 = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[2];
    ComboBox cb1 = new ComboBox();
                cb1.DataSource = table1.DefaultView;
    cb1.DisplayMember = "sName";
    cb1.ValueMember = "sId";
    cb1.Cursor = Cursors.Arrow;
    cb1.DropDownStyle = ComboBoxStyle.DropDownList;
    cb1.Dock = DockStyle.Fill;
    dgtb1.TextBox.Controls.Add(cb1);
        cb1.SelectionChangeCommitted +=new EventHandler(cb1_SelectionChangeCommitted); DataGridTextBoxColumn dgtb2 = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[3];
    ComboBox cb2 = new ComboBox();
    cb2.DataSource = table1.DefaultView;
    cb2.DisplayMember = "sName";
    cb2.ValueMember = "sId";
    cb2.Cursor = Cursors.Arrow;
    cb2.DropDownStyle = ComboBoxStyle.DropDownList;
    cb2.Dock = DockStyle.Fill;
    dgtb2.TextBox.Controls.Add(cb2);
    cb2.SelectionChangeCommitted +=new EventHandler(cb2_SelectionChangeCommitted); string str2 = "select * from JobInfo";
    DataTable table2 = new DataTable();
    table2 = bb.ExeSQLdt(str2); DataGridTextBoxColumn dgtb3 = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[4];
    ComboBox cb3 = new ComboBox();
    cb3.DataSource = table2.DefaultView;
    cb3.DisplayMember = "JName";
    cb3.ValueMember = "jsId";
    cb3.Cursor = Cursors.Arrow;
    cb3.DropDownStyle = ComboBoxStyle.DropDownList;
    cb3.Dock = DockStyle.Fill;
    dgtb3.TextBox.Controls.Add(cb3);
    cb3.SelectionChangeCommitted +=new EventHandler(cb3_SelectionChangeCommitted); DataGridTextBoxColumn dgtb4 = (DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[5];
    ComboBox cb4 = new ComboBox();
    cb4.DataSource = table2.DefaultView;
    cb4.DisplayMember = "JName";
    cb4.ValueMember = "jId";
    cb4.Cursor = Cursors.Arrow;
    cb4.DropDownStyle = ComboBoxStyle.DropDownList;
    cb4.Dock = DockStyle.Fill;
    dgtb4.TextBox.Controls.Add(cb4);
    cb4.SelectionChangeCommitted +=new EventHandler(cb4_SelectionChangeCommitted); } private void dtime_ValueChanged(object sender, EventArgs e)
    {
        this.dataGrid1[this.dataGrid1.CurrentCell] = ((DateTimePicker)sender).Value.ToShortDateString();
    } private void cb1_SelectionChangeCommitted(object sender, EventArgs e)
    {
    this.dataGrid1[this.dataGrid1.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
    }  
     
    private void cb2_SelectionChangeCommitted(object sender, EventArgs e)
    {
    this.dataGrid1[this.dataGrid1.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
    }   private void cb3_SelectionChangeCommitted(object sender, EventArgs e)
    {
    this.dataGrid1[this.dataGrid1.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();

     
    private void cb4_SelectionChangeCommitted(object sender, EventArgs e)
    {
    this.dataGrid1[this.dataGrid1.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
    }