我使用sqlite从DataBase填充datagrid - ShowDataBase(string a);
然后我想对它进行排序,单击按钮时 (注意!我只想在程序中对它进行排序(不是修改数据库)。只想删除错误的行)
private void Button_Click(object sender, RoutedEventArgs e)
{
ShowDataBase("Pacients");
if ((bool)SortFromCheckBox.IsChecked)
{
//Delete all data earlier than data that user asked for
for (int i = DataGridMain.Items.Count - 1; i >= 0; i--)
{
DataGridRow row = (DataGridRow)DataGridMain.ItemContainerGenerator.ContainerFromIndex(i);
var item = DataGridMain.Items[i];
var data = DataGridMain.Columns[4].GetCellContent(item);
if ((Convert.ToDateTime(data)) <= (Convert.ToDateTime(SortFromTextBox.Text)))
{
//Smth to delete row № i from datagrid
}
}
}
if ((bool)SortUntilCheckBox.IsChecked)
{
//Delete all data older than data that user asked for
}
if ((bool)SortByClientCheckBox.IsChecked)
{
//Delete all data where client cell is != name that user want to sort by
}
if ((bool)SortByDoctorCheckBox.IsChecked)
{
//Delete all data where doctor cell is != name that user want to sort by
}
}
答案 0 :(得分:1)
根据我的理解,您需要一种功能来过滤和排序数据。您可以为此目的使用机制的构建:CollectionView
。您需要创建一个源将设置为从数据库获取的数据。
要过滤集合,您可以使用collectionView.Filter
并为您的目的定义不同的过滤器。对于排序功能,您应该使用collectionView.SortDescriptions
。通过这种方式,您可以使用.NET中已存在的工具,您只需根据需要进行自定义。
使用这种方法,您不会从基本集合中删除任何内容,因此您只需要获取一次数据并在应用程序中以不同方式呈现它。如果您使用MVVM方法,则此代码应在ViewModel中完成。如果您坚持在视图中实现此类功能,则可以使用<CollectionViewSource>
。
您可以在这里找到一些资源: