|
Выпадающие списки в DataGrid через DataGridTemplateColumn (по каждой строке индивидуально)
|
|||
---|---|---|---|
#18+
Имеется DataGrid, в котором создан выпадающий список посредством DataGridTemplateColumn. Разметка следующая: <DataGrid AutoGenerateColumns="False" Name="RezaltDataGrid" RowHeaderWidth="0" Margin="10,120,10,10"SelectionMode="Single"> <DataGrid.Columns> <DataGridTextColumn Width="2*" IsReadOnly="True" Header="Ген" Binding="{Binding Path=description}"/> <DataGridTemplateColumn Width="*" Header="Генотип"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox Height="18" ItemsSource="{Binding}" Padding="5,0,5,0" DropDownOpened="ComboBox_DropDownOpened" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> Для каждого ComboBox делаю свой выпадающий список при раскрытие, на основании данных из БД. private void ComboBox_DropDownOpened(object sender, EventArgs e) { ComboBox comboBoxGenotype = (ComboBox)sender; QuerySelect query; //мой класс для запросов DataTable genotypes; query = new QuerySelect(this.dbManager); string sqlQuery = @"select id, name from Genotypes where Genotypes.idGene = " + ((DataRowView)this.RezaltDataGrid.SelectedItem).Row.ItemArray[2].ToString(); query.setSqlQuerySelect(sqlQuery); genotypes = query.ExecuteQuery(); comboBoxGenotype.DataContext = genotypes; comboBoxGenotype.DisplayMemberPath = "name"; comboBoxGenotype.SelectedValuePath = "id"; } Проблема заключается в том, что не корректного определения одно из полей в гриде, для текущей строки ("((DataRowView)this.RezaltDataGrid.SelectedItem).Row.ItemArray[2].ToString()"). Т. к. при клике по ComboBox не на текущей строке происходит сначала DropDownOpened, а потом уже новая строка переходит в режим редактирования. И необходимый мне параметр берется со строки из прошлой позиции. Чтобы было все правильно, необходимо сначала встать на строку, в которую хочу внести изменения (правильно в этом случае определить "((DataRowView)this.RezaltDataGrid.SelectedItem).Row.ItemArray[2].ToString()"), и только потом кликнуть по ComboBox. Подскажите пожалуйста как решить эту проблему? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 15:14 |
|
Выпадающие списки в DataGrid через DataGridTemplateColumn (по каждой строке индивидуально)
|
|||
---|---|---|---|
#18+
Возможно вопрос необходимо перефразировать. Как сделать так, чтобы строка DataGrid перешла в режим редактирования (стала выделенной) при клике по ComboBox, до вызова DropDownOpened. Чтобы определился правильный параметр по средствам конструкции (DataRowView)this.RezaltDataGrid.SelectedItem).Row.ItemArray[2].ToString()? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2014, 16:05 |
|
|
start [/forum/topic.php?fid=21&fpage=25&tid=1441187]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 130ms |
0 / 0 |