如何向DataGridView中的列添加按钮
DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Software Title", typeof(string))); dt.Columns.Add(new DataColumn("Version", typeof(string))); dt.Columns.Add(new DataColumn("Uninstall", typeof(System.Windows.Forms.Button))); DataRow dr = dt.NewRow(); dr[0] = "App"; dr[1] = "1.0"; Button uninstall = new Button(); uninstall.Text = "Uninstall"; dr[2] = uninstall; dt.Rows.Add(dr); dataGridViewSoftware.DataSource = dt;
文本出现但按钮从不显示。
假设您使用的是Windows窗体,则需要将DataGridViewButtonColumn
添加到DataGridView
– 而不是直接添加到DataTable
。
在将DataTable
绑定到DataGridView
之后,这应该发生在某处。
像这样的东西应该工作:
DataGridViewButtonColumn uninstallButtonColumn = new DataGridViewButtonColumn(); uninstallButtonColumn.Name = "uninstall_column"; uninstallButtonColumn.Text = "Uninstall"; int columnIndex = 2; if (dataGridViewSoftware.Columns["uninstall_column"] == null) { dataGridViewSoftware.Columns.Insert(columnIndex, uninstallButtonColumn); }
当然,您必须处理网格的CellClick
事件才能使用按钮执行任何操作。
在DataGridView初始化代码中的某处添加它
dataGridViewSoftware.CellClick += dataGridViewSoftware_CellClick;
然后创建处理程序:
private void dataGridViewSoftware_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == dataGridViewSoftware.Columns["uninstall_column"].Index) { //Do something with your button. } }
简单一点。
DataGridViewButtonColumn button = new DataGridViewButtonColumn(); { button.Name = "button"; button.HeaderText = "Button"; button.Text = "Button"; button.UseColumnTextForButtonValue = true; //dont forget this line this.dataGridView1.Columns.Add(button); }
您可以使用下面的最佳方法
gvEmployees.AutoGenerateColumns = false; gvEmployees.ColumnCount = 4; DataGridViewButtonColumn SelectButton = new DataGridViewButtonColumn(); SelectButton.Name = "Select"; SelectButton.Text = "Select"; SelectButton.UseColumnTextForButtonValue = true; if (gvEmployees.Columns["Select"] == null) { gvEmployees.Columns.Insert(0, SelectButton); } DataGridViewButtonColumn DeleteButton = new DataGridViewButtonColumn(); DeleteButton.Name = "Delete"; DeleteButton.Text = "Delete"; DeleteButton.UseColumnTextForButtonValue = true; if (gvEmployees.Columns["Delete"] == null) { gvEmployees.Columns.Insert(1, DeleteButton); } gvEmployees.Columns[2].Name = "EmployeeID"; gvEmployees.Columns[2].HeaderText = "EmployeeID"; gvEmployees.Columns[2].DataPropertyName = "EmployeeID";