aardio 文档

dotNet.ReoGrid 扩展库 - 列过滤与排序

创建列过滤器

使用 CreateColumnFilter 方法在指定列上创建过滤器:

// 将数据数组放入工作表
sheet1["C1:C5"] = { "A", "B", "C", "D", "E" };
// 创建内置列过滤器
var filter = sheet1.CreateColumnFilter("C", 0);

第二个参数指定工作表中存在多少标题行,此示例中没有标题行所以传入0(默认值为1)。

默认情况下,列过滤器会在每个指定列上添加下拉按钮:
143

点击下拉按钮,会显示包含候选列表的弹出菜单:
144

要创建不带GUI的过滤器,可将第四个参数 AutoColumnFilterUI 设为 NoGUI

var filter = sheet1.CreateColumnFilter("C", "C", 0, AutoColumnFilterUI.NoGUI);

通过编程方式过滤

要更改可选择和显示在工作表中的项,可以在指定列的过滤器中添加或移除文本项:

// 选择项
filter.Columns["C"].SelectedTextItems.AddRange({ "A", "C", "D" });

然后应用过滤器:

// 执行过滤
filter.Apply();

结果:
145

在ReoGrid编辑器中创建过滤器

准备工作表数据:

sheet1["C1:C6"] = { "标题", "A", "B", "C", "D", "E" };

由于第一行是标题行,不应包含在过滤和排序范围内,选择第二行并通过菜单"Sheet"->"Filter"创建过滤器。选择范围添加过滤器时,标题行不会包含在过滤和排序范围内:
148

选择菜单"Sort Z-A":
149

标题行不会改变:
151

通过编程排序

使用 SortColumn 方法对指定列的数据进行排序:

// 对"C"列排序
sheet1.SortColumn("C", false);

第二个参数为true表示升序排序,false表示降序排序。

对列排序并应用到指定范围

可以对某列数据进行排序,但只移动指定范围内的其他数据:

// 将数据放入工作表
sheet1["A1"] = {
  { "1", "A", "D" },  { "2", "B", "E" },  { "3", "C", "F" },  { "4", "D", "G" },  { "5", "E", "H" },
};

对"B"列排序,但只移动A和B列,C 列不会改变。

sheet1.SortColumn(1, ReoGrid.RangePosition("A1:B5"), false);

结果:
152

Markdown 格式