だから私はこのTreeView/TreeStoreを持っており、リストからのデータを入力します。私のアプリケーションは、上記のリストのみを参照データとして使用します。TreeStoreは、表示用に構築されたばかりです。また、TreeViewは、列ヘッダーを傾けることで再利用できます。各列の初期化に.set_sort_column_id()が使用されたためです。
問題は、次のコードが常にクリックされた行番号をディスプレイに返すことです。
# convert ListStore iter to row number
def rowno(self):
(model, iter) = self.MY_LIST_STORE.get_selection().get_selected()
return model.get_path(iter)[0]
それをすることになっています。元のソートされていないリストが表示されている限り、これは問題なく機能します。TreeView(およびTreeStore?)が再利用されると、表示される行番号(.get_path
)は元のデータストアの行番号に対応しなくなります。
どうすればこれをマッピングできますか?または、最初に渡されたTreeViewリストのどのエントリに対応する選択されたパス番号を見つけるにはどうすればよいですか?
(もちろん、TreeStoreに偽の列を挿入して、元の行番号を保持することもできます。しかし、それを実現するための何らかのネイティブな方法が必要ですか?)