ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   Flex Builder 3
     DataGridの強制スクロールの抑止
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 トピック
ito246
投稿日時: 2008-8-25 15:45
ご主人様
登録日: 2007-2-24
居住地:
投稿: 60
DataGridの強制スクロールの抑止
初歩的な質問で大変申し訳ありません。
どうしてもわからないので、教えてください。

以下のようなプログラムがあります。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.collections.ArrayCollection;
			
			private var arcTest:ArrayCollection = new ArrayCollection();
			
			//dataProviderをセット			
			private function funSet():void{
				arcTest.addItem({col1:1,col2:234,col3:345});
				arcTest.addItem({col1:2,col2:234,col3:345});
				arcTest.addItem({col1:3,col2:234,col3:345});
				arcTest.addItem({col1:4,col2:234,col3:345});
				arcTest.addItem({col1:5,col2:234,col3:345});
				arcTest.addItem({col1:6,col2:234,col3:345});
				arcTest.addItem({col1:7,col2:234,col3:345});
				arcTest.addItem({col1:8,col2:234,col3:345});
				arcTest.addItem({col1:9,col2:234,col3:345});
				arcTest.addItem({col1:10,col2:234,col3:345});
				arcTest.addItem({col1:11,col2:234,col3:345});
				arcTest.addItem({col1:12,col2:234,col3:345});
				arcTest.addItem({col1:13,col2:234,col3:345});
				arcTest.addItem({col1:14,col2:234,col3:345});

				dgTest.dataProvider = arcTest;
			}
			
			//一行削除後にリフレッシュで描画を更新
			private function funRefresh():void{		
				//一行削除
				arcTest.removeItemAt(10);				
				//リフレッシュ
				arcTest.refresh();
			}

		]]>
	</mx:Script>
	
	<mx:DataGrid id="dgTest" x="50" y="43">
		<mx:columns>
			<mx:DataGridColumn headerText="列 1" dataField="col1"/>
			<mx:DataGridColumn headerText="列 2" dataField="col2"/>
			<mx:DataGridColumn headerText="列 3" dataField="col3"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:Button x="369" y="69" label="ボタン" click = "funSet()"/>
	<mx:Button x="369" y="112" label="refresh" click = "funRefresh()"/>
	
</mx:Application>



DataGridの行を選択した状態で、refreshをかけると、
選択した行がDataGridの先頭行へと
強制スクロールされてしまいます。

たとえば、
1行目から10行目まで画面にレコードが
表示されているとして、

 。換毀椶鬟リックで選択
◆refresh を実行

すると、画面に表示されるのは、
4行目以降になってしまいます。


scrollToIndexや、isItemVisibleを使用すれば、
解決できそうなのですが、isItemVisibleの使用方法が
わかりません。

そもそも、isItemVisibleを使うという考えが、
既に間違えているのでしょうか?

ちなみに、
selectable = falseとして解決できるのですが、
レコードを選択して処理をする部分があるので、
これ以外の解決方法を教えていただけないでしょうか?
どなたかご教授お願いします。

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » DataGridの強制スクロールの抑止 ito246 2008-8-25 15:45
     Re: DataGridの強制スクロールの抑止 ito246 2008-8-25 15:55
       Re: DataGridの強制スクロールの抑止 goki 2008-8-25 17:33
         Re: DataGridの強制スクロールの抑止 ito246 2008-8-25 19:14
     Re: DataGridの強制スクロールの抑止 mya 2008-8-26 0:20
       Re: DataGridの強制スクロールの抑止 ito246 2008-8-26 9:49

投稿するにはまず登録を