Фильтрация и выбор данных из flexgrid

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

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

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

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

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

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

Clipboard.SetDataObject(_c1FlexGrid.Selection.Clip);

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

1 ответ

Решение

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

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

Другие вопросы по тегам