Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid и DataSet / 6 сообщений из 6, страница 1 из 1
24.02.2011, 11:23
    #37133273
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и DataSet
Нигде не могу найти пример использования DataSet в DataGrid-e

Есть DataSet. Таблицы в DataSet формируются "на лету".
В DataSet есть оснавная таблица, которую я отображаю в гриде. Колонки в основной таблице формируются тоже "на лету".
Предположим в пятой колонке содержатся целые значения.
Это вторичные ключи на таблицу "Table5"
Table5 это таблица с двумя колонками
"ID" - целого типа
"Name" - строка
Relation тоже содержится в DataSet.
Т.е. на момент создания колонок в DataGrid все данные и связи в DataSet уже есть.

Вопрос, как сформировать DataGrid, чтобы в пятой колонке были не целые числа, а строки из Table5. А при редактировании выскакивал ComboBox, в котором бы были значения "Name" из пятой таблицы?

Пока вразумительного примера на эту тему не нашел.
...
Рейтинг: 0 / 0
24.02.2011, 15:19
    #37133871
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и DataSet
Перехватываю формирование колонок в гриде.
При формировании пятой колнки я должен показать не ID, а имя
Как это сделать?
Пока имею неправильный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DataTemplate dataTemplate = new DataTemplate(typeof(string));

Binding binding = new Binding();
binding.Source = columnEnum.All; // Тут содержится массив Key, Name
binding.Path = new PropertyPath("Name");
binding.Mode = BindingMode.OneWay;

FrameworkElementFactory factoryTextBlock = new FrameworkElementFactory(typeof(TextBlock));
factoryTextBlock.SetValue(TextBlock.TextProperty, new Binding("Key"));
factoryTextBlock.SetBinding(TextBlock.TextProperty, binding);
dataTemplate.VisualTree = factoryTextBlock;


col.CellContentTemplate = dataTemplate;

Что-то делаю не правильно. Везде по колонке отображается "null"
null это в моем массиве [Key, Name] самое первое значение [0,"null].
...
Рейтинг: 0 / 0
24.02.2011, 15:21
    #37133881
Шайтан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и DataSet
в столбце грида используй combobox.
При этом и связи в датасет'е делать не требуется
...
Рейтинг: 0 / 0
24.02.2011, 17:18
    #37134192
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и DataSet
Можешь показать код, как это делается?
...
Рейтинг: 0 / 0
24.02.2011, 21:02
    #37134604
koJIo6ok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и DataSet
vlsaf,
можно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Binding bind = new Binding("kod_mes") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
ValidatesOnExceptions = true, ValidatesOnDataErrors = true };
dgr.Columns.Add(new DataGridComboBoxColumn()
  {
     Header = "месяц",
     MinWidth = 100.0,
     ItemsSource = new DataView(myDataTable.Month(), "key not in (13)", "key asc", DataViewRowState.Unchanged),
     SelectedValuePath = "[0]",
     DisplayMemberPath = "[1]",
     SelectedValueBinding = bind
  });
...
Рейтинг: 0 / 0
25.02.2011, 11:02
    #37135208
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid и DataSet
Спасибо за код. Но я использую Xceed DataGrid. Добавление колонок идет автоматически. Я перехватываю это событие и пытаюсь в нем что-то сделать.

Попробую подойти с другой стороны. Но это уже будет новый топик...
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid и DataSet / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]