// *************************************************// 列数// *************************************************
public function get count():int {
return this.columns.length;
}
M_AddRow.as
// 初回( 行が存在しない )フラグ
private var init_flg:int = 1;
// カレント行( -1 は先頭行の前 )
private var cur_row:int = -1;
import mx.controls.*;
import mx.collections.*;
// *************************************************// 配列を Object のプロパティにセット// *************************************************
public function SetArrayToObject(obj:Object,arr:Array):void {
if ( arr == null ) {
arr = [];
}
// 配列の数
var arrayMax:int = arr.length;
// 列の数( M_Prop.as で定義 )
var colMax:int = this.count;
// obj( 行データ ) の プロパティに値をセット
var i:int;
for( i = 1; i <= colMax; i++ ) {
if ( i > arrayMax ) {
obj["COL" + i] = "";
}
else {
obj["COL" + i] = arr[i-1];
}
}
}
// *************************************************// 行追加// 引数は配列// *************************************************
public function AddRow(... cols):void {
this.AddRowArray(cols)
}
public function AddRowArray(cols:Array=null):void {
// 初回処理
if ( this.init_flg == 1 ) {
this.init_flg = 0;
// dataProvider に実体をセット
this.dataProvider = new ArrayCollection();
// 先頭行を選択状態にする
this.selectedIndex = 0;
}
// 行データをセットする Object を作成
var obj:Object = new Object();
// 配列を Object のプロパティにセット
SetArrayToObject( obj, cols );
// obj( 行データ )を追加
this.dataProvider.addItem(obj);
// 現在行の設定
this.cur_row++;
}
// *************************************************// 行挿入// 引数は配列// *************************************************
public function InsertRow(idx:int,... cols):void {
this.InsertRowArray(cols,idx)
}
public function InsertRowArray(cols:Array=null,idx:int=0):void {
// 初回処理
if ( this.init_flg == 1 ) {
this.init_flg = 0;
// dataProvider に実体をセット
this.dataProvider = new ArrayCollection();
// 先頭行を選択状態にする
this.selectedIndex = 0;
}
// 行データをセットする カーソル を作成
var ivc:IViewCursor = this.dataProvider.createCursor();
// 行データをセットする Object を作成
var obj:Object = new Object();
// 配列を Object のプロパティにセット
SetArrayToObject( obj, cols );
// obj( 行データ )を追加
ivc.seek(CursorBookmark.FIRST,idx);
ivc.insert(obj);
// 現在行の設定
this.cur_row++;
}