powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Выпадающие списки в DataGrid через DataGridTemplateColumn (по каждой строке индивидуально)
2 сообщений из 2, страница 1 из 1
Выпадающие списки в DataGrid через DataGridTemplateColumn (по каждой строке индивидуально)
    #38571714
Oleg5555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется 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. Подскажите пожалуйста как решить эту проблему? Спасибо.
...
Рейтинг: 0 / 0
Выпадающие списки в DataGrid через DataGridTemplateColumn (по каждой строке индивидуально)
    #38571823
Oleg5555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно вопрос необходимо перефразировать. Как сделать так, чтобы строка DataGrid перешла в режим редактирования (стала выделенной) при клике по ComboBox, до вызова DropDownOpened. Чтобы определился правильный параметр по средствам конструкции (DataRowView)this.RezaltDataGrid.SelectedItem).Row.ItemArray[2].ToString()? Спасибо.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Выпадающие списки в DataGrid через DataGridTemplateColumn (по каждой строке индивидуально)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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