Всем привет. Программа для проведения соревнований. Интерфейс WPF, СУБД SQLite. Список участников реализован с помощью datagrid.
<DataGrid Style="{StaticResource ResourceKey= DoubleClickOpen}" x:Name="MembersDG" DataContext="{Binding Path = Member}" HorizontalAlignment="Left" Height="891" Margin="0,71,0,0" VerticalAlignment="Top" Width="1262" Loaded="DG_Load" ColumnWidth="*" HeadersVisibility="Column" CanUserReorderColumns="False" IsReadOnly="True" AutoGenerateColumns="False" Background="#FFD7D7D7" PreviewKeyDown="DeleteRecord">
<DataGrid.Columns>
<DataGridTextColumn Header="ФИО" Binding="{Binding Path=ФИО}"/>
<DataGridTextColumn Header="Дата рождения" Binding="{Binding Path=ДатаРождения}"/>
<DataGridTextColumn Header="Контактные данные" Binding="{Binding Path=Контакты}"/>
<DataGridTextColumn Header="Клуб" Binding="{Binding Path=Клуб}"/>
<DataGridTextColumn Header="Тренер" Binding="{Binding Path=Тренер}"/>
<DataGridTextColumn Header="Квалификация" Binding="{Binding Path=Квалификация}"/>
<DataGridTextColumn Header="Основной вид спорта" Binding="{Binding Path=ОсновнойВидСпорта}"/>
<DataGridTextColumn Header="Примечания" Binding="{Binding Path=Примечания}"/>
</DataGrid.Columns>
</DataGrid>
В таблице разрешена сортировка (в свойствах datagrid галочка CanUserSortColumns). Если таблица не отсортирована, то при добавлении/удалении участников таблица обновляется (участники сразу добавляются и удаляются), а если отсортировать таблицу (тык на хедер любого столбца) то таблица не обновляется - добавленный элемент отображается только после повторной сортировки, и после удаления элемент остается видимым, а удаляется из таблицы также после повторной сортировки.
Класс участников:
public class Member
{
public string ФИО { get; set; }
public string ДатаРождения { get; set; }
public string Контакты { get; set; }
public string Клуб { get; set; }
public string Тренер { get; set; }
public string Квалификация { get; set; }
public string ОсновнойВидСпорта { get; set; }
public string Примечания { get; set; }
public Member(string name, string bornDate, string contacts, string club, string trainer, string cvalification, string mainSportType, string description)
{
ФИО = name;
ДатаРождения = bornDate;
Контакты = contacts;
Клуб = club;
Тренер = trainer;
Квалификация = cvalification;
ОсновнойВидСпорта = mainSportType;
Примечания = description;
}
}
Если перед добавлением/удалением элементов прописать:
dataGrid.Items.SortDescriptions.Clear();
то обновление работает нормально, но использовать это не всегда удобно, например мне всегда нужно отображать список отсортированный по фамильно по алфавиту.
Обновление делаю так:
SQLiteCommand cmd = new SQLiteCommand(sql, connection);
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
members.Add(new Member(reader[0].ToString(), reader[1].ToString(), reader[2].ToString(), reader[3].ToString(), reader[4].ToString(), reader[5].ToString(), reader[6].ToString(), reader[7].ToString()));
}
}
dataGrid.ItemsSource = members;
dataGrid.Items.
Это моя криворукость или баг wpf? Как сделать так что бы сортировка не влияла на обновление.
Прошло много времени и я исправил.
Вместо List<>
нужно использовать ObservableCollection
.
Спасибо всем кто помог)!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Текст самого задания: Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными...
Есть 2 таблицы, из одной я могу выбрать список нужных мне id:
Подскажите пожалуйста, есть код, в этом коде, происходит разложение текста в массив, после чего идет проверка текста с изменением его согласно...