0

私はrss文字列を扱う必要があります。基本的に、グリッド内のデータを操作する必要があります。

データグリッドの変更ハンドラーに次の関数があります。これは、アイテムをクリックすると、選択したデータフィールド行が以下に示すようにラベルにバインドされることを意味します。

protected function dg_selectionChangeHandler(event:GridSelectionEvent):void
{               
            const eventGrid:Grid = event.currentTarget.grid;
            var currentIndx:int = eventGrid.selectedIndex;
            var currentDataItem:Object = eventGrid.selectedItem;
            selIndex.text = String(currentIndx);
            txtSource.text = String(currentDataItem.link);              
            txtSource.visible = false;
            HttpGetUrl(txtSource.text);
}

それは私にとってはうまくいきます。グリッド内のアイテムを選択するたびに、その行の値を定義したラベルにバインドします。

しかし、データグリッドが初めて初期化されたときに値が入力されていないか、初めてデータグリッドが画面に表示されたときに、selectedindex = 0 のときにその行の値がラベルに入力されません。以下に示すように、コードも初めて初期化します。

protected function dg_creationCompleteHandler(event:FlexEvent):void
{               
            const eventGrid:Grid = event.currentTarget.grid;
            var currentIndx:int = eventGrid.selectedIndex;
            var currentDataItem:Object = eventGrid.selectedItem;
            selIndex.text = String(currentIndx);
            txtSource.text = String(eventGrid.selectedItem.link);
            txtSource.visible = true;
}

データグリッドのコードは次のとおりです。

<s:DataGrid id="dgNews" x="10" y="70" width="300" height="623" click="dg_clickHandler(event)" color="#000000" visible="true" horizontalScrollPolicy="off" 
            variableRowHeight="true" selectionChange="dg_selectionChangeHandler(event)" creationComplete="dg_creationCompleteHandler(event)" selectedIndex="0">
    <s:columns>
        <s:ArrayList>               
            <s:GridColumn dataField="title" headerText="Title" width="300"/>
        </s:ArrayList>
    </s:columns>
</s:DataGrid>

デフォルトの selectedindex = 0 値を定義したラベルにバインドする方法を教えてもらえますか?

4

1 に答える 1

0

その場合はバインディングではありません...選択した行のいくつかの値をいくつかのテキスト入力に与えているだけです...バインディングを使用すると、ケースでデータグリッドと他のコンポーネント入力の間に接着剤を作成することを意味しますこのようなもの:

  <s:TextInput text="{dgNews.selectedItem.link}"/>

このようにして、入力はグリッドの選択された行の値にバインドされます。

もう1つのことは明確ではないかもしれませんが、グリッドが作成されたときに、グリッドがデータプロバイダーのデータをまだ取得していないため、選択された行がないということです...そのため、イベントリスナーバインディングは必要ありませんそれを処理します...この方法では、選択イベントさえ必要ありません...あまりにも

簡単に言うと、コードのこの部分はすべて mxml であり、関数を使用せずに処理する textinput サンプルの方法にすぎません。

データが到着したときに最初の行を選択したい場合は、そのイベントを処理し、グリッドの選択されたインデックスを設定するだけで済みます。

于 2013-09-17T20:47:50.513 に答える