申し訳ありませんが、それは私が思いつくことができる最高のテーマです。私は偉大なグリッドコントロールを使用していますイベントを処理するために代理人を使用
、スーパーリスト、lはここにある:あなたが問題を読む前に
は、あなたは非常に小さなVB.NET 2005のサンプルアプリをダウンロードすることができますので、ご注意くださいいますデモ問題:
http://dokmanovich.com/Documents/SuperListEvents.zip
私の質問への答えは、私は願って、私が達成しようとしているものの文脈で私はより良いダイナミックな事象を理解するのに役立ちます取得。
グリッドは次のように機能します。グリッドに列を追加するときは、実行時に値を返すイベントハンドラのアドレスを指定します。この場合、CC_ItemValueAccessor関数。後者の関数は、この場合は「ToDo」オブジェクトである入力パラメータで呼び出されます。各ToDoオブジェクトは、グリッド内で1つの行としてレンダリングされます。 CC_ItemValueAccessor関数の仕事は、渡されたToDoオブジェクトに対応する行のグリッドによって表示される列値を返すことです。
私は次のステップにそれを取るまで、これが正常に動作します:
私は動的にしたい実行時に列を作成します。たとえば、ユーザー指定のSQLを実行した結果として返されるデータテーブルの出力を表示したいとします。
前述の静的アプローチを使用して、渡された行オブジェクトのグリッド内の各列の値を返す1つのcolumnItemValueAccessor関数があります。さて、SQLの返された結果に基づいて実行時に列が決定されるので、すべての列を処理し、このイベントをトリガした列の名前を決定し、その列の値を返します単一のパラメータとして渡される行オブジェクト。
問題は、ItemValueAccessor関数は行オブジェクトのみを含むシグネチャを持ち、すべての列が同じItemValueAccessor関数にフックされているため、どの列名が必要かを判断する方法がわかりません。イベントハンドラ。
これはコントロールの単なる制限であり、この問題を克服するためには基本的なカスタムコントロールを強化する必要があると思われますが、これはC#で書かれた高度なコントロールであるためVBの男です。
ここでは、コードです:
Private Sub AddCcColumn()
Dim NewColumn As New BinaryComponents.SuperList.Column("CC", "CC", 110, AddressOf Cc_ItemValueAccessor)
_SuperList.Columns.Add(NewColumn)
End Sub
Private Function Cc_ItemValueAccessor(ByVal rowItem As Object) As Object
Dim ToDo As ToDo = CType(rowItem, SrToDoAndException).ToDo
Return ToDo.CCs.ToString
End Function
「---------------------------
そして、ここにあるが、列のインスタンス化メソッドのシグニチャーと、処理するプロシージャーを指定する最後のパラメーターの定義は、列の値を戻す原因となるイベント・ハンドラーを識別します。 BinaryComponents.SuperListの メンバー
ます。Public Sub新(文字列、文字列、整数としてByVal幅、BinaryComponents.SuperList.ColumnItemValueAccessorとしてByVal columnItemValueAccessorとしてByValキャプションとしてByVal名)。(System.IntPtrとしてオブジェクトとしてByValオブジェクト、ByValの方法)カラム
ます。Public Sub新BinaryComponents.SuperList.ColumnItemValueAccessor
の メンバーは、誰もが何か提案を持っていますか、私は立ち往生していますか?私は本当にこのコントロールの幻想的なグループ化機能を利用したいと思っています。そのため、ユーザは、自分が望む任意の列でSQLの動的出力をグループ化できる動的出力を表示できます。
私は上記のサイトで著者に質問しましたが、回答はありませんでした。これはこれを行う方法を見つける絶好の試みです。
私と一緒にお越しいただきありがとうございます。私は、この質問が、第三者のコントロールを参照しているという事実に基づいて拒否されないことを願っています。私の希望は、その答えは、より普遍的な話題である代議員のより良い理解にあるということです。
Lambaのコメントは興味深いですが、私はもっと助けが必要です。 問題を本質的なものに取り除き、何が必要であるかを示すコメントを追加して、実際の例を作成しました。あなたが傾いている場合 あなたがここにそれを得ることができます。 http://dokmanovich.com/Documents/SuperListEvents.zip そうでなければ、私は何かを探していますbetetr pesudoコードと一般的な方向での点より、I以来、私自身でそれを理解しているようには見えません。 50から始まる賞金を提供しています。 – ChadD