Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Заполнение DataGrid из кода


Автор: shtuceron 15.11.2011, 16:53
Здравствуйте, подскажите, как можно программно заполнить datagrid, не нужно коннектиться к базе, на данном этапе, просто программно ручками.

Привожу свой пример, но он не работает
Код

DataTable table = new DataTable();
table.Columns.Add(new DataColumn() { ColumnName = "Имя банкомата", DataType = typeof(string) });
table.Columns.Add(new DataColumn() { ColumnName = "Почтовый адрес", DataType = typeof(string) });
table.Columns.Add(new DataColumn() { ColumnName = "ip адрес", DataType = typeof(string) });

 for (int k = 0; k < 100; k++)
{
   DataRow row = table.NewRow();
   row["Имя банкомата"] = "!";
   row["Почтовый адрес"] = ".";
   row["ip адрес"] = "?";
   table.Rows.Add(row);
}

dataGrid3.ItemsSource = table; // вот тут косяк

// Error    28    Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'.
// An explicit conversion exists (are you missing a cast?)M3Operations



Спасибо большое.

Автор: Gvozdin 15.11.2011, 19:46
http://www.dotnetspider.com/resources/34103-WPF-Binding-DataTable-WPF-Datagrid.aspx

Автор: shtuceron 16.11.2011, 09:22
Спасибо, а можете подсказать как можно установить ширину каждого столбца, тоже программно, поискав, пытаюсь сделать так:
Код

..................
_datagrid.DataContext = dataSet.Tables[0];

_datagrid.Columns[0].Width = new DataGridLength(100);


Вот такая возникает ошибка:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Автор: Gvozdin 16.11.2011, 10:25
Надо подождать когда колонки создадутся, это асинхронно происходит скорее всего

Это надо подцепиться к событию DataGrid.AutoGeneratedColumns

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)