我想在启动时指定默认顺序,但仍然允许用户通过单击列标题进行排序.遗憾的是,SortDirection属性在设置时被忽略 - 即我们得到正确的列标题箭头,但没有任何排序.
手动单击标题,可以正确排序数据,因此不是排序本身.这是我正在使用的简化版本:
<DataGrid ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=CurrentView}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Header 1" Binding="{Binding ApplicationName}"/>
<DataGridTextColumn Header="Header 2"
Binding="{Binding TotalTime}" SortDirection="Descending"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
更新:我还尝试按照建议将SortDescriptions添加到ICollectionView,但没有很好的结果.这可能与我正在动态地向集合中添加新项目这一事实有关吗?即在启动时列表是空的并且慢慢填充,也许排序描述只应用一次?
我有一个wpf工具包的问题DataGrid
.
我有ItemsSource
三列:
名字
姓
地址
在C#代码隐藏中,我设置了排序方向以及要对其进行排序的列,如下所示:
ICollectionView view = CollectionViewSource.GetDefaultView(dataGrid1.ItemsSource);
view.SortDescriptions.Clear();
view.SortDescriptions.Add(new SortDescription("LastName", ListSortDirection.Ascending));
view.Refresh();
Run Code Online (Sandbox Code Playgroud)
实际排序没有问题,但标题中有视觉风格.如果用户通过单击标题对列进行排序,则视觉样式会更改,但视觉样式不表示以编程方式设置列排序描述.
为什么会这样,我如何切换标题以使其显示为已排序?
我在VS2008上使用C#WinForms应用程序.默认情况下,当单击DataGridView中的列标题时,它会对该列Ascending进行排序,然后您可以再次单击列标题将其排序为Descending.
我试图扭转这一点,所以初始点击排序降序然后第二次点击排序升序,我无法弄清楚如何做到这一点.有人知道吗?
谢谢
我正在尝试对一组用户进行排序.我可以访问排序属性和方向(asc,desc).我目前的查询订单如下.但正如您所看到的那样,它并未考虑排序方向.如何在不必使用Dynamic Linq或为"asc"或"desc"排序方向添加另一组语句的情况下构建此表达式.
public override IQueryable<DalLinq.User> GetSort(IQueryable<DalLinq.User> query)
{
//SelectArgs.SortDirection <- Sort Direction
switch (SelectArgs.SortProperty)
{
case "LastName":
query = query.OrderBy(p => p.LastName);
break;
case "FirstName":
query = query.OrderBy(p => p.FirstName);
break;
default:
query = query.OrderBy(p => p.UserName);
break;
}
return query;
}
Run Code Online (Sandbox Code Playgroud) Asp.net 4.0 gridView内置支持"排序箭头"保存了一些代码.默认情况下,当我们从数据库返回时,我的所有网格都会被排序,因此我应该通过使用ASP.NET SortedDescendingHeaderStyle-CssClass等来指示哪个列是默认排序的.
ASP.NET没有神奇地修饰默认排序列:它无法知道SQL指定的顺序.我可以使用正确的CSS类以声明方式或编程方式装饰相应的标题单元格...但是当我排序时,ASP.NET不会为我删除它.因此,目前我通过在第一个"排序"事件中遍历标题单元格来查找它.所以我有一些代码,我运行两次,一次添加箭头,一次在第一次手动排序,以删除它.这很复杂,几乎与整个工作一样多的工作是在4.0之前.
所以...我必须遗漏一些东西:有没有办法告诉ASP.NET GridView它的内容已经以一种避免必须手动添加然后删除该排序指示符的方式进行排序?
我在django中使用评论应用程序,但目前排序方向是按日期(从旧到新),我希望评论按日期显示从新到旧,如何更改?
c# ×5
sorting ×3
datagrid ×2
wpf ×2
asp.net-4.0 ×1
datagridview ×1
django ×1
gridview ×1
linq ×1
linq-to-sql ×1
python ×1
winforms ×1
xaml ×1