首页 > 解决方案 > 排序后的筛选器/选定行无法正常工作

问题描述

我有一个显示文档列表的应用程序。当您单击列表记录时,您在应用程序的右侧有所选文档的内容(根据随附的打印屏幕)。该列表可以很容易地按日期过滤。一切正常。

但是当用户在对数据进行排序后尝试选择一行时,就会出现第一个问题。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();

过滤器工作正常,但排序后显示选定的文档不起作用......

我现在不知道怎么解决...

在此处输入图像描述

标签: c#winforms

解决方案


推荐阅读