Как связать DataTable со сложными объектами данных в GridView? - PullRequest
0 голосов
/ 01 февраля 2011

Мой DataTable генерируется программно и содержит в ячейках объекты типа JobInstance.

DataTable dataTable = new DataTable();</p> <pre><code>// first column - label dataTable.Columns.Add("JobType", typeof(string)); // other columns (data-driven) foreach(string config in Configurations) { DataColumn col = new DataColumn(config, typeof(JobInstance)); // !!! dataTable.Columns.Add(col); } // rows foreach(string jobType in JobTypes) { DataRow row = dataTable.NewRow(); row["JobType"] = jobType; foreach(string config in Configurations) { row[config] = GetJobInstance(jobType, config); // returns a JobInstance object } dataTable.Rows.Add(row); }

Когда я связываю эту таблицу данных с ASP GridView, он отображает только первый столбец. Но если я удаляю «typeof (Job)» при создании столбца (строка с // !!!), GridView отображает все столбцы, показывая результат работы JobInstance.ToString () в ячейках. Однако у меня нет доступа к базовому объекту JobInstance, только отображаемые строковые значения.

Мне нужен доступ к объекту JobInstance при отображении GridView (например, в OnRowDataBound), потому что я хочу получить доступ к полям внутри JobInstance для каждой ячейки, чтобы определить параметры форматирования, и добавить другие ссылки в каждую ячейку.

Возможно ли это?

Спасибо.

1 Ответ

1 голос
/ 01 февраля 2011

Да, это возможно.

Определите новый класс для вашего JobInstance и поместите в него свои поля, а для ясности пусть он будет в отдельном файле.

в своем коде aspx, определите коллекцию List<JobInstance>, затем заполните ее экземплярами JobInstance, затем присвойте этот список DataSource вашего `GridView '.

Чтобы иметь возможностьчтобы получить доступ к экземплярам List<JobInstance>, сделайте этот список полевым членом в классе вашей страницы aspx.

Надеюсь, это поможет, дайте мне знать, если вам нужна помощь.

...