0

Studentという名前のクラスがあり、プロパティとともにいくつかのプロパティが"isSelected:Boolean"あり、クラスはバインド可能に定義されています。

[Bindable]
[RemoteClass(alias="portal::Student")]
public class Student

mxml アプリケーションには、データプロバイダーが Student の ArrayCollection に設定されているデータグリッドがあります。すべての学生を選択することになっているheaderItemRendererチェックボックスとともに、datagridのcheckboxexの列があります(行のすべてのチェックボックスを選択または選択解除する必要があります)。

dataProvider の各 Student オブジェクトの isSelected プロパティを false または true に設定するヘッダーのチェックボックスのクリック イベントのハンドラーを定義しました。しかし、ヘッダーのこのチェック ボックスをクリックすると、警告が表示されます。クラス 'Student' のプロパティ 'isSelected' にバインドできないため、行のチェック ボックスが更新されません。

ここでバインドが機能しない理由がわかりません。この問題を解決するために何をすべきかわかりません。どんな助けでも大歓迎です。

4

3 に答える 3

0

actionscriptクラスでEventDispatcherを拡張します(バインディングはイベントディスパッチに基づいています)。

于 2012-05-24T10:00:02.083 に答える
0

ItemRenderer が受信データを [Bindable] としてマークされたプロパティに保存することを確認する必要があります。「isSelected」だけでなく、 Student 全体を渡す必要があります...

于 2012-05-24T17:29:04.870 に答える
0

コードのどこかに学生インスタンスへの参照があり、バインドしたいと思います。バインディング チェーンを機能させるには、この参照も [Bindable] と宣言する必要があります。

また、バインディングを機能させるために ActionScript に依存しない場合は、EventDispatcher を拡張する必要はありません。これは、MXML がそのコードを生成するためです (Cosma のコメントに関して)。

インライン レンダラーを定義しますか? コンポーネントが生成され、スコープの問題が発生する可能性があるため、デバッグが少し曖昧になるため、これは私の意見では最適ではありません。新しいコンポーネントを実装するか、IDataRenderer を実装し、ライブ サイクルを通じてデータを子に伝達するか、MXML でコンポーネントを実装することをお勧めします。IDataRenderer を使用する理由 このインターフェースが必要です。

また、それについてはわかりませんが、そうすべきではありません

    [Bindable]
    [RemoteClass(alias="portal.Student")]
    public class Student {}

?

于 2012-05-24T15:19:02.543 に答える