我有一个绑定到DataTable的DataGridView。
我稍后将新的按钮列直接添加到DGV。下次刷新表时,我想清除DGV中的所有先前数据。
对于表格我只做var table = new DataTable();
但是当DGV被定义为方法内的局部时,使用DataGridView执行此操作会导致它永远不会显示在窗体上。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//dataGridView1 = new DataGridView(); //<-- uncommenting this line breaks the form's dgv from displaying anything
DataTable table = new DataTable();
table.Columns.Add("C_" + table.Columns.Count);
table.Rows.Add("R1");
table.Rows.Add("R2");
dataGridView1.DataSource = table;
DataGridViewButtonColumn oCol = new DataGridViewButtonColumn();
oCol.Name = "Buttons";
oCol.Text = "(...)";
oCol.UseColumnTextForButtonValue = true;
dataGridView1.Columns.Add(oCol);
}
}
}
这是一个错误,或者我应该如何正确刷新/重置/清除dgv?
上面的代码段已经从原始版本进行了编辑。取消注释代码中的行,以查看在RunMode中button1的不同行为。
答案 0 :(得分:1)
dataGridView1.DataSource = null;
或者您可以选择清除列/行。
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
答案 1 :(得分:0)
我认为这不是一个错误。但不幸的是我无法解释:)
只需使用Controls.Add(..)
DataGridView dgv = new DataGridView();
private void button1_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("C_" + table.Columns.Count);
table.Rows.Add("R1");
table.Rows.Add("R2");
dgv.DataSource = table;
DataGridViewButtonColumn oCol = new DataGridViewButtonColumn();
oCol.Name = "Buttons";
oCol.Text = "(...)";
oCol.UseColumnTextForButtonValue = true;
dgv.Columns.Add(oCol);
Controls.Add(dgv); //<--Try to check this.
}
private void button2_Click(object sender, EventArgs e)
{
dgv.Columns.Clear();
}