处理列过滤器服务器端事件

在应用列过滤器时处理服务器端事件

有两个主要事件,详述如下。

  1. OnBeforeColumnFilter:在过滤器将应用于列之前触发。
  2. OnAfterColumnFilter:在列上应用过滤器后触发。

这是 Aspose.Cells.GridWeb 组件的 ASPX 脚本,用于添加和分配上述事件。

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
<acw:GridWeb ID="GridWeb1" runat="server"
OnBeforeColumnFilter="GridWeb1_BeforeColumnFilter"
OnAfterColumnFilter="GridWeb1_AfterColumnFilter">
</acw:GridWeb>

这些事件可用于获取有关过滤过程的有用信息,例如必须应用过滤器的列索引和值。以下代码段演示了如何使用 OnBeforeColumnFilter 事件来检索用户在 GridWeb UI 上选择用于过滤的列索引和值。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
protected void GridWeb1_BeforeColumnFilter(object sender, RowColumnEventArgs e)
{
// Display the column index and filter applied
string msg = "[Column Index]: " + (e.Num) + ", [Filter Value]: " + e.Argument;
Label1.Text = msg;
}

另一方面,如果需要在应用过滤器后获取过滤行数,则可以使用 OnAfterColumnFilter 事件,如下所示。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
protected void GridWeb1_AfterColumnFilter(object sender, RowColumnEventArgs e)
{
string hidden = "";
int headrow = 0;
int maxrow = GridWeb1.WorkSheets[0].Cells.MaxRow;
int count = 0;
// Iterate all worksheet rows to find out filtered rows
for (int i = headrow + 1; i <= maxrow; i++)
{
if (GridWeb1.WorkSheets[0].Cells.Rows[i].Hidden)
{
hidden += "-" + (i + 1);
}
else
{
count++;
}
}
// Display hidden rows and visible rows count
string msg = "[Hidden Rows]: " + hidden + " [Visible Rows]: " + count;
Label1.Text = msg;
}