0

FlexGrid からデータをコピーしたいのですが、少し問題があります。フィルタリングを使用していて、選択したデータをコピーしたいだけですが、それは「非表示」のデータをコピーします (フィルターに thx を表示しません)。たとえば、私はフィルターを使用しましたが、flexgrid には数行しかありません。すべてコピーしたいので、左上のセルをクリックすると、表示されているすべての行が選択されますが、どこかに貼り付けると、すべての行を超えてしまいます(表示されていないもの)。Shiftボタンで行を選択する場合も同様です。

どうすればそれを「修正」できますか?それが正常でエラーではないことはわかっていますが、変更する必要があり、それを行う簡単な方法があることを願っています。プロパティなどを変更します。

しかし、そうでない場合、その「難しい」方法を実際に行う方法がわかりません。_c1FlexGrid.Rows.Selected を使用し、選択した行が表示されている場合は何らかの方法で制御することを考えていました。しかし、方法がわかりません。

手伝ってくれてありがとう

編集

flexgrid の SelectionMode を Default から ListBox に変更すると、Rows.Selected を使用でき、行が表示されているかどうかを確認できるプロパティ Visible があることがわかりました。これにより、表示されている行だけを取得できます。しかし、これらの行をクリップボードに追加する方法がわかりません。これを使用する前に:

Clipboard.SetDataObject(_c1FlexGrid.Selection.Clip);

しかし、今では、表示された行を保存してからクリップボードに保存するためにどのクラスを使用するかはわかりません。また、デフォルト(CellRange)のSelectionModeが好きで、すべての行だけを選択するのは理想的ではないため、選択に問題があります。何か案は?

4

1 に答える 1

0

他の誰もより良い解決策を見つけられないので、ここに私のものを書きます。問題の編集で書いたように、CellRange としての SelectionMode に問題がありました。このモードでそれを「修正」する方法はまだわかりませんが、ListBox モードでそれを行う方法はわかりました。

したがって、flexgrid モードを ListBox に変更します。次に、これを copy メソッドで使用できます。

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 に答える