Как добавить данные строки непосредственно в класс DataGrid? - PullRequest
0 голосов
/ 04 октября 2011

Как добавить данные строки непосредственно в класс DataGrid?

Я использую бесплатный класс с открытым исходным кодом от компании, которую я не назову (даже если это RadiantQ), которая мне очень нравится.Он имеет этот классный элемент управления MuLtiColumnTreeList, который представляет собой комбинацию элемента управления дерева и сетки данных.Он поставляется с примером кода, который вы можете посмотреть и все.Это довольно круто.Он унаследован от класса DataGrid.

Проблема в том, что я новичок в привязке данных на этом уровне, и поэтому я хотел бы просто написать код, который вынуждает данные, полученные от меня, собиратьеще один класс в элемент управления.

Поэтому я посмотрел в Интернете, как это сделать для класса DataGrid, и информация не легко доступна.Кто-нибудь может помочь?

Кажется, что после того, как привязка данных сделана, и если вы измените данные, вам придется повторно привязать к элементу управления.Это то, что доставляло мне трудности раньше.Поэтому мне нужно выполнить команду вроде этой:

this.mutlicoolgridview.ItemsSource = null;this.mutlicoolgridview.ItemsSource = SampleData.GetSampleDataNew ();

Проблема, с которой я столкнулся сейчас, заключается в следующем.После выполнения его команды около тысячи раз у меня фактически кончилась память.Я думаю, что делать это:

this.mutlicoolgridview.ItemsSource = null;

не очень хорошая идея.Есть ли лучшая команда для освобождения памяти?

Это похоже на сбой: [IMG]http://i67.photobucket.com/albums/h292/Athono/unusual.png[/IMG]

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Чтобы добавить строки в DataGrid, вам необходимо сначала связать источник данных с DataGrid, а затем добавить строки в ваш источник данных.

Допустимые источники данных:

  • A DataTable
  • A DataView
  • A DataSet
  • A DataViewManager
  • Отдельный массив измерений
  • Любой компонент, который реализует IListSourceinterface
  • Любой компонент, который реализует интерфейс IList

Вот пример формы Windows для добавления строки в DataTable, которая привязана к DataGrid:

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 с источниками данных.

0 голосов
/ 04 октября 2011

Если у вас есть список объектов, вы можете скопировать их в BindingList. Тогда вы можете использовать

dataGrid.ItemsSource = myBindingList;
...