jqGrid----添加行

1.通用方法。

function creatNewRow(){
	//ローダーON
	sofia.ui.dispLoader(true);

	var $list = $('#gridID');
	var rows = $list.jqGrid('getRowData');
	var idArray = $.map(rows, function (row, index) { return row.number; });//すべてのID
	var id = makeId(idArray);// 新しいIDを生成
	var data = { number:id, yosanka:'', kamoku:'', zaigen:'', kingaku:''};// 追加する新しいレコードを作成
	var rowid =  rows.length + 1;// 新しいグリッドのrowidを決める
	$list.jqGrid('addRowData', rowid, data, 'first');// グリッドの最下部にレコードを追加する
	var  newData= $('#gridID').jqGrid('getRowData');// グリッドの情報を一時保管
	$('#gridID').clearGridData(); / グリッドのclear
	$('#gridID').jqGrid('setGridParam', {data : newData,});
	$('#gridID').trigger('reloadGrid'); //グリッドの更新

	/*グリッドの更新
	$('#gridYosan')
		.clearGridData()
		.jqGrid('setGridParam', {
		data : newData,
	}).trigger('reloadGrid');*/
	$list.jqGrid('setSelection',rowid); // 新行の選択
	//$list.jqGrid('editCell', rowid, 1, true);  // セルのフォーカス
	sofia.ui.dispLoader(false);//ローダーOFF
}

//
// 新しいレコードIDを生成する処理
//
var makeId = function(idArray) {
	// 新しいレコードのIDを計算する
	var id; // ID格納用
	if(idArray.length == 0){
		id = 1;// グリッドにデータがない場合
	}else{
		// グリッドのレコード数が1件以上の場合
		var idArrayNum =  new Array(idArray.length);// 数値へ変換する
		for(var i = 0; i<idArray.length; i++){
			idArrayNum[i] = Number(idArray[i]);
		}

		// 昇順ソート
		idArrayNum.sort(function(a,b){
		        if( a < b ) return -1;
		        if( a > b ) return 1;
		        return 0;
		});

		// 空いているIDを使用する
		for(var i = 0; i<idArrayNum.length; i++){
			if(idArrayNum[i+1] - idArrayNum[i] != 1){
				id = idArrayNum[i] + 1;
				break;
			}
		}
	}
	return id;
}

猜你喜欢

转载自blog.csdn.net/lsh15846393847/article/details/84769823
今日推荐