如何将行数据直接添加到DataGrid类?
我正在使用一个我不喜欢的公司的免费开源课程(即使它是RadiantQ)我非常喜欢。它有一个很酷的MuLtiColumnTreeList控件,它是树控件和数据网格的组合。它附带了一个示例代码,您可以查看它和一切。这很酷。它继承自DataGrid类。
问题是我对这个级别的数据绑定有点新意,所以我想继续编写一些代码,强制我从另一个类收集的数据进入控件。
因此,我在线查看了如何为DataGrid类执行此操作,并且信息不易获取。有人可以帮忙吗?
似乎一旦数据绑定完成,并且如果您更改数据,则必须重新绑定到控件。这是给我带来困难的原因。所以我要做的就是运行这样的命令:
this.mutlicoolgridview.ItemsSource = null; this.mutlicoolgridview.ItemsSource = SampleData.GetSampleDataNew();
我现在遇到的问题是这个。在执行了大约一千次命令之后,我实际上已经没有内存了。我认为这样做:
this.mutlicoolgridview.ItemsSource = null;
不是一个好主意。是否有更好的命令来释放内存?
这是一个类似的崩溃: []
答案 0 :(得分:0)
如果您有对象列表,则可以将它们复制到BindingList。然后你可以使用
dataGrid.ItemsSource = myBindingList;
答案 1 :(得分:-2)
要向DataGrid添加行,首先需要将DataSource绑定到DataGrid,然后向DataSource添加行。
有效的数据源是:
这是一个Windows Form示例,它将一行添加到绑定到DataGrid的DataTable:
public partial class Form1 : Form
{
// Instantiate the DataSource that will be bound to the DataGrid
DataSet dataSet = new DataSet("MyDataSet");
DataTable dataTable = new DataTable("MyDataTable");
public Form1()
{
InitializeComponent();
this.dataSet.Tables.Add(this.dataTable);
this.dataTable.Columns.Add(new DataColumn("Date"));
// Bind the DataTable to the DataGrid
this.dataGrid1.SetDataBinding(this.dataSet, "MyDataTable");
}
private void button1_Click(object sender, EventArgs e)
{
// When the user clicks the button, add a new row to the DataTable
DataRow dr = this.dataTable.NewRow();
dr["Date"] = DateTime.Now;
this.dataTable.Rows.Add(dr);
}
}
我建议您创建一个抛弃项目并使用DataGrid类来熟悉DataGrid与DataSource一起使用的不同方式。