| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > DataGrid и DataTable |
| Автор: WOoHOo 7.8.2014, 13:22 | ||||||
| Ребята, помогите разобраться! Есть удаленный сервер, на нем я вызываю хранимую процедуру. Получаю данные и пытаюсь поместить их в datagrid.
Привязка к таблице:
Теперь вопросы: 1) Не работает заполнение DataTable (таблица в ds присутствует, кол-во 1 после добавления) Ни так int i = da.Fill(ds.Tables[0]); datagrid_on.ItemsSource = ds.Tables[0].DefaultView; Ни так int i = da.Fill(ds.Tables["ObjectsOn"]); datagrid_on.DataContext = dt_ObjOn.DefaultView; Можно, конечно, заполнять просто DataSet () - int i = da.Fill(ds); - и при таком раскладе все работает, но в нем должно быть несколько datatable и необходимо заполнять конкретную. Как это сделать? Почему не работает? 2) При удачном выводе данных в таблицу они выводятся примерно так: 21.12.12 22:00 | Алевтина | Ушла с работы 21.12.12 22:30 | Георгий | Пришел на работу 21.12.12 21:40 | Георгий | Пришел на работу 21.12.12 21:45 | Алевтина | Ушла с работы Т.е. данные почему-то располагаются не в том порядке (по времени) как должно быть... Даже при сортировке по убыванию.. Хотя в access приложении (которое переписываю) все правильно отображается 3) При удачном заполнении datatable, есть столбец и в нем содержатся данные формата 30.01.12 22:00:00 (datapost). Есть необходимость разделить дату и время и вывести их в различные столбцы datagrid. Я это делаю так:
В планах прикрутить группировку строк по дате. Я правильно понимаю что группировка идет по столбцу datagrid (Date_Start), а не datatable (datapost) и нет необходимости добавлять в datatable еще один столбец чисто под дату? |
| Автор: Ilya81 7.8.2014, 14:12 |
| DataContext - это объект с соответствующими свойствами, а не view в базе данных. Во-первых, у DataGrid надо задать ItemsSource, он должен быть типа IEnumerable. Если уж нужно предельно упростить, то лучше взять свойство Rows, ибо оно является коллекцией. А столбцы bind'ить на элементы свойства Item, поскольку DataContext будет DataRow и у него есть такое свойство. |
| Автор: WOoHOo 9.8.2014, 12:54 | ||||||
| Пункт 2 (вопрос про время) - решено. Накосячил с выводом. Было {0:HH:MM:ss}, стало {0:HH:mm:ss}. Вернемся к пункту 1. Заполнение datatable и привязка к datagrid Вот так не работает:
А вот так работает:
Почему если делать заливку данных, используя dataset, все получается, а если чисто datatable, то нет? Хотя метод dataadapter.Fill принимает параметр DataTable... Т.е. все должно работать и без DataSet.. Т.е. хочу получить код вида:
НО в i = 0. Почему так? :( |