Фильтрация и выбор данных из flexgrid - PullRequest
0 голосов
/ 21 июня 2011

Я хочу скопировать данные из flexgrid, и у меня есть небольшая проблема.Я использую фильтрацию, и я просто хочу скопировать выбранные данные, но они копируют данные, которые «скрываются» (не показывать thx для фильтрации).Например, я использовал фильтр и в flexgrid есть всего несколько строк, и я хочу, чтобы все скопировались, поэтому щелкните левой верхней ячейкой, и он выберет все показанные строки, но когда я его где-то пропущу, он пройдет все строки (с тем, что не показано).То же самое при выборе строк кнопкой Shift.

Как я могу это исправить?Я знаю, что это нормально, и это не ошибка, но мне нужно это изменить, и я надеюсь, что есть простой способ сделать это.Измените какое-нибудь свойство или что-то в этом роде.

Но если его нет, я на самом деле не представляю, как сделать этот «трудный» путь.Я думал, что, возможно, использовать _c1FlexGrid.Rows.Selected и каким-то образом контролировать, если отображается выбранная строка.Но я не знаю, как.

Спасибо за помощь

Редактировать

Я понимаю, что если я изменю SelectionMode для flexgrid с Default на ListBox, то яМожно использовать Rows.Selected, и у него есть свойство Visible, которое я могу проверить, отображается строка или нет.Так что я могу благодаря этому взять только строки, которые показаны.Но теперь я не знаю, как я могу добавить эти строки в буфер обмена.Раньше я использовал это:

Clipboard.SetDataObject(_c1FlexGrid.Selection.Clip);

, но теперь я не знаю, какой класс использовать для сохранения отображаемых строк и затем в буфер обмена.И есть проблема с выбором, потому что мне нравится SelectionMode, который был по умолчанию (CellRange), и выбор только всех строк не идеален.Есть идеи?

1 Ответ

0 голосов
/ 23 июня 2011

Поскольку никто не получит лучшего решения, я напишу здесь мое.Как я писал в вопросе редактирования, была проблема с 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);

Я надеюсь, что это поможет кому-то еще:)

...