0

我想从 flexgrid 复制数据,我有一个小问题。我正在使用过滤,我只想复制选定的数据,但它复制的数据是“隐藏”的(不显示过滤器)。例如,我使用了过滤器,而在 flexgrid 中只有几行,我想全部复制,所以单击左上单元格并选择所有显示的行,但是当我将它传递到某个地方时,它会超过所有行(未显示的行)。使用 Shift 按钮选择行时相同。

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

但如果没有,我实际上不知道如何做那种“硬”的方式。我在想也许可以使用 _c1FlexGrid.Rows.Selected 并以某种方式控制是否显示选定的行。但我不知道怎么做。

感谢帮助

编辑

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

Clipboard.SetDataObject(_c1FlexGrid.Selection.Clip);

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

4

1 回答 1

0

因为没有其他人能得到更好的解决方案,所以我会在这里写我的。正如我在有问题的编辑中所写,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);

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

于 2011-06-23T11:37:03.767 回答