过滤然后从flexgrid中选择数据

时间:2011-06-21 07:02:27

标签: c# select filter componentone c1flexgrid

我想从flexgrid复制数据,我有一点问题。我正在使用过滤,我只想复制选定的数据,但它复制数据是“隐藏”(不显示thx过滤)。例如,我使用过滤器,在flexgrid中只有几行,我想要全部复制,所以点击左上方单元格,然后选择所有显示的行,但当我经过它的某个地方时,它经过所有行(没有显示)。使用Shift按钮选择行时相同。

我该如何“修复”它?我知道这是正常的,这不是错误,但我需要改变它,我希望有这么简单的方法。改变一些财产或类似的东西。

但如果没有,我实际上不知道如何以“硬”的方式做到这一点。我在想,如果显示选定的行,可以使用_c1FlexGrid.Rows.Selected和某种方式控制。但我不知道如何。

感谢您的帮助

修改

我发现如果我将flexgrid的SelectionMode从Default更改为ListBox,那么我可以使用Rows.Selected并且它具有属性Visible,我可以检查是否显示了行。所以我可以感谢这个只显示的行。但现在我不知道如何将这些行添加到剪贴板。在我使用它之前:

Clipboard.SetDataObject(_c1FlexGrid.Selection.Clip);

但现在我没有使用哪个类来保存显示的行然后到剪贴板。选择有问题,因为我喜欢SelectionMode,它是默认的(CellRange),只选择所有不理想的行。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

因为没有其他人得到更好的解决方案我会写在这里。正如我在Edit中所写的那样,SelectionMode存在CellRange的问题。我仍然不知道如何使用此模式“修复”它,但我想出了如何使用ListBox模式。

因此在flexgrid更改模式下为ListBox。然后你可以在复制方法中使用它:

foreach (C1.Win.C1FlexGrid.Row item in _c1FlexGrid.Rows.Selected)
{
    if (!item.Visible)
       item.Selected = false;
}
Clipboard.SetDataObject(_c1FlexGrid.Clip);

我希望这也有助于其他人:)