トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     Windowコンポーネント内のDataGridが選択できない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ikue
Åê¹ÆNo.5477
投稿日時: 2004-3-24 20:00
新米
居住地:
投稿: 2
使用環境:
MX2004 Professional
Win2000
IE6
Windowコンポーネント内のDataGridが選択できない
はじめまして。
現在、MX2000Proを使用し、[新規]→[フォームアプリケーション]でアプリケーションを作成しているのですが、PopUpManagerで作成したWindow内に配置したDataGridの行を選択することができません。

ウィンドウの表示は、フォーム上に配置したボタンをクリックした時にPopUpManager#createPopUp()で行っています。
ウィンドウのcontentPathで指定しているのは、別のフォームの名前です。

※フォームの配置
application
 +--Form1 ... ウィンドウをPopUpさせるボタンを含む
 +--Form2 ... ウィンドウのcontentPathに指定(DataGridを含む)
  
// Window PopUp
var initObj:Object = new Object();
initObj.contentPath = "Form2";
var window= PopUpManager.createPopUp(_root, Window, true, initObj);
window.setSize(250, 200);


このようにしてポップアップウィンドウ内に配置したDataGridの一行を選択したいのですが、選択することができません。
スクロールやカラム幅のリサイズ操作はできます。
また、同じフォームに配置したButtonコンポーネントは期待通りに動作します。
DataGridのselectableはtrueです。(traceウィンドウで確認)
DataGridのdataProviderには、Arrayオブジェクトを使い、いくつかのプロパティをもつObjectオブジェクトを持たせています。

なお、試しに他のコンポーネントもいくつか配置してみたのですが、ListやComboBoxはやはり選択できませんでした。
CheckBoxにチェックを入れることはできました。

原因がおわかりの方がいらっしゃいましたら、お教えいただければ幸いです。。


----------------
ikue.

ikue
Åê¹ÆNo.5483
投稿日時: 2004-3-24 21:38
新米
居住地:
投稿: 2
使用環境:
MX2004 Professional
Win2000
IE6
Re: Windowコンポーネント内のDataGridが選択できない
自己レスですみません。動きについては一応ですが、解決しました。

実は、dataProviderとしてセットしたArrayオブジェクトは、FlashRemoting(OpenAMF)を使用してサーバから取得したものを直接使っていました。
配列メンバのオブジェクトはプロパティと値(文字列)を持つものだったのですが、これをそのまま使うとなぜか選択不可能になりました。
これが原因かと思い直し、自分でテストデータのオブジェクトを作成してdataProvider.addItem()でセットしたところ、この行に限って選択することができました。

そこで、FlashRemotingからの結果を直接使わず、オブジェクトを作り直してセットしたところ、うまく選択可能な行とすることができました。

試したパターンと結果は下のとおりです。(○:選択可、×:選択不可)


※result:Array ... FlashRemotingの結果
  
×Pattern1 - resultを直接dataProviderにセット
  myDataGrid.dataProvider = result;
  
×Pattern2 - resultからオブジェクトを取り出し、新しい配列に格納
  var newArray:Array = new Array();
  for(var i:Number; i<result.length; i++) {
    newArray.push(result[i]);
  }
  myDataGrid.dataProvider = newArray;
  
○Pattern3 - resultのオブジェクトを1つずつ新しく作りなおす
  var newArray:Array = new Array();
  for(var i:Number; i<result.length; i++) {
    newArray.push({prop1:result[i].prop1, prop2:result[i].prop2});
  }
  myDataGrid.dataProvider = newArray;


詳しくはわからないのですが、FlashRemotingから戻ってきたオブジェクトが特別なのでしょうか。
上記resultに含まれるオブジェクトのプロパティが編集不可というわけではありませんでした。(traceで確認)
もし、この辺り理由をご存知でしたら、ぜひお教えください。


----------------
ikue.

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops