我有一个显示文档列表的应用程序。单击列表记录时,您将在应用程序的右侧拥有所选文档的内容(根据随附的打印屏幕)。该列表可以按日期轻松过滤。一切正常。
但是,当用户在对数据进行排序后尝试选择一行时,就会出现FIRST问题。 Gridview选择在被排序之前位于单击索引处的行。
通过以下代码,我已经解决了该问题:
this.dTabCWoodHeadArodes.DefaultView.Sort = e.Condition;
this.dTabCWoodHeadArodes = this.dTabCWoodHeadArodes.DefaultView.ToTable(true);
现在排序有效,但排序后过滤器不起作用(列表保持不变)。
完整源代码:
private void c1TrueDBGridHead_AfterSort(object sender, C1.Win.C1TrueDBGrid.FilterEventArgs e)
{
this.dTabCWoodHeadArodes.DefaultView.Sort = e.Condition;
this.dTabCWoodHeadArodes = this.dTabCWoodHeadArodes.DefaultView.ToTable(true);
this.c1TrueDBGridHead.SelectedRows.Clear();
if (this.c1TrueDBGridHead.RowCount > 0)
{
this.c1TrueDBGridHead.SelectedRows.Add(0);
this.c1TrueDBGridHead.Row = 0;
}
this.c1TrueDBGridHead.Refresh();
}
对我来说,这是一件有趣的事(令人沮丧),因为当我停用以下代码部分时:
this.dTabCWoodHeadArodes.DefaultView.Sort = e.Condition;
this.dTabCWoodHeadArodes = this.dTabCWoodHeadArodes.DefaultView.ToTable(true);
过滤器不起作用。
另一方面,当我停用时:
this.c1TrueDBGridHead.SelectedRows.Clear();
if (this.c1TrueDBGridHead.RowCount > 0)
{
this.c1TrueDBGridHead.SelectedRows.Add(0);
this.c1TrueDBGridHead.Row = 0;
}
this.c1TrueDBGridHead.Refresh();
过滤器工作正常,但排序后无法显示所选文档...
我现在不解决此问题...