DataGrid のカラムにコンボボックスとボタンを定義する

  App.mxml



ソースコードのダウンロード




  
<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:my="winofsql.Controls.*"
	initialize="initData();"
	paddingLeft="0"
	paddingTop="10"
	paddingBottom="0"
	paddingRight="0"
>

<mx:Script>
<![CDATA[

	import mx.collections.*;

	// アプリケーションの初期化
	public function initData():void {

		// 列をクリア
		grid.Reset();

		// ヘッダタイトルを表示しない
		grid.ShowHeader(false);

		// 高さを設定
		grid.width = 500;
		grid.height = 350;

		// 列を追加
		grid.AddColumn("対象");
		grid.AddColumn("URL",350);
		grid.AddColumn("COMBO");	// 各行のコンボボックスの参照をセット

		// ComboBox 参照用カラムを非表示にする
		grid.SetColumnHide(2);

		// タイトルカラムにコントロールを定義
		grid.SetColumnControl(0, winofsql.Controls.LboxGridButton);
		grid.SetColumnControl(1, winofsql.Controls.LboxGridCombo);

		var arc:ArrayCollection;
		var option:Object;

		// データをセット

		// 1行目
		arc = new ArrayCollection();
		option = new Object();	// コンボデータ1行分をセットする
		option.label = "Google 検索";
		option.data = "http://www.google.co.jp/";
		arc.addItem(option);

		option = new Object();	// コンボデータ1行分をセットする
		option.label = "Google MAP";
		option.data = "http://maps.google.co.jp/";
		arc.addItem(option);

		grid.AddRow("Google",arc,new Object());		// 1行分

		// 2行目
		arc = new ArrayCollection();
		option = new Object();
		option.label = "Yahoo 検索";
		option.data = "http://www.yahoo.co.jp/";
		arc.addItem(option);

		option = new Object();
		option.label = "天気";
		option.data = "http://weather.yahoo.co.jp/weather/";
		arc.addItem(option);

		option = new Object();
		option.label = "トピックス";
		option.data = "http://dailynews.yahoo.co.jp/fc/";
		arc.addItem(option);

		grid.AddRow("Yahoo",arc,new Object());

		// 3行目
		arc = new ArrayCollection();
		option = new Object();
		option.label = "MSDN2";
		option.data = "http://msdn2.microsoft.com/ja-jp/library/default.aspx";
		arc.addItem(option);

		option = new Object();
		option.label = "サポート検索";
		option.data = "http://support.microsoft.com/search/";
		arc.addItem(option);
		grid.AddRow("Microsoft",arc,new Object());

		// 選択カーソルで選択しない
		grid.Unselect();	

		// プロパティを正しく設定
		grid.validateNow();
	}

	// 指定 URL でブラウザを開く
	public function OpenUrl(url:String):void {
		var req:URLRequest = new URLRequest(url);
		navigateToURL(req, "_blank");
	}

]]>
</mx:Script>

<mx:Panel
	id="panel"
	title="Grid"
>

	<!-- *************************************************** -->
	<!-- 汎用型拡張 DataGrid -->
	<!-- *************************************************** -->
	<my:LboxGrid id="grid"/>

</mx:Panel>

</mx:Application>
  



  アイテムレンダラー用カスタムコントロール



LboxGridCombo.mxml
  
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[

	private function initCombo(obj:ComboBox):void {

		// COL3 には、Object がセットされているので、
		// combo プロパティを作成して、参照をセットする
		data.COL3.combo = obj;

		// COL2 には、ArrayCollection がセットされている
		obj.dataProvider = data.COL2;

	}

]]>
</mx:Script>

	<mx:ComboBox
		width="100%"
		creationComplete="initCombo(ComboBox(event.currentTarget))" 
	/>

</mx:HBox>
  

LboxGridButton.mxml
  
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[

	import mx.controls.*;

	private function clickButton(obj:Button):void {

		// ボタンがクリックされたら、コンボボックスの参照を取得して
		// ブラウザを開くメソッドに、選択されている値を渡す
		var combo:ComboBox = data.COL3.combo;
		mx.core.Application.application.OpenUrl(combo.value);

	}

]]>
</mx:Script>

	<mx:Button
		label="{data.COL1}"
		width="100%"
		click="clickButton(Button(event.currentTarget))" 
		buttonMode="true"
	/>

</mx:HBox>
  



  LboxGrid.mxml

  
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGrid height="400" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script source="M_AddRow.as"/>
<mx:Script source="M_Clear.as"/>
<mx:Script source="M_Column.as"/>
<mx:Script source="M_Prop.as"/>
</mx:DataGrid>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ