2017-04-14 37 views
1

私は、行内に記入されていないセルを記述するエラー出力でデータ満杯チェックを実装しようとしています。無料jqGrid。セルと一緒に列名を取得する

//get row id 
var gr = $("#" + subgrid_table_id).jqGrid('getGridParam', 'selrow'); 
// check row select 
if (gr != null) { 
/* 
var myGrid = $("#" + subgrid_table_id), 
selRowId = myGrid.jqGrid('getGridParam', 'selrow'), 
//get cell value: 
col1Value = myGrid.jqGrid('getCell', selRowId, 'stage'); 
//get all colnames 
var columnNames = myGrid.jqGrid('getGridParam','colNames'); 
//get column name by index: 
var col1Name = columnNames[4]; 

if (col1Value == "") { 
    alert("This data is empty: "+col1Name); 
} 
else { 

つまり、すべてがうまくいくようですが、列の数を変更するとすべてが無駄になる可能性があります。 ColModelで列名をColNamesにリンクして動的ソリューションを取得するにはどうすればよいですか?

答えて

0

まず、jqGridのすべてのパラメータは、myGrid.jqGrid('getGridParam')によって利用可能な1つのオブジェクトに保存されます。従って、var selRowId = myGrid.jqGrid('getGridParam', 'selrow');は、p.selrowと同じであり、var p = myGrid.jqGrid('getGridParam');である。

この列は、colModelp.colModel[iCol]のインデックスで識別されます。反対側では、列のnameプロパティが列iColのインデックスとして頻繁に知られています。さらに、列ヘッダーのドラッグアンドドロップによって列を並べ替える可能性があります。 1つの必要性は、可能性を可能にするグリッドのオプションを含む。列の順序は、columnChooserまたは方法remapColumnsまたはremapColumnsByNameの直接呼び出しによって変更できます。列インデックスの代わりに列名(変更されない)を保存することをお勧めします。

列名で列インデックスを取得するには、colModel配列をループし、nameプロパティの値をテストします。このような操作を高速化するために、jqGridはmapオブジェクトiColByNameをjqGridのオプションとして提供しました。したがって、カラム名がcmNameの場合は、var iCol = p.iColByName[cmName];を使用してカラムのインデックスを取得できます。 colModelの列はp.colModel[iCol]になり、列ヘッダーのテキストはp.colNames[iCol]になります。

ちなみに、colNamesの値を正しく理解しているかどうかはわかりません。パラメータの名前は良くありませんが、古いバージョンとの互換性のために使用されます。配列colNamesの要素はHTMLフラグメントで、列ヘッダーに配置されます。 colNamesの中に空の文字列を持つことも、異なる列に同じヘッダーを付けることもできます。反対側でのcolModelのプロパティは、実際のの名前です。それは空ではありません。異なる列に重複した名前を使用することはできず、名前にはスペースを入れることはできません。

上記の情報があれば、すべての列に関する情報を簡単に見つけることができます。

最後の発言。グリッドのデータを取得するために使用できる3つの主な方法があります:getCellgetRowDataおよびgetLocalRowです。 jqGridは入力データを取得し、データをフォーマットし、フォーマットされたHTMLフラグメントをセル内に配置します(<td>)。さらに、jqGridは、元の生データをdataのパラメータ(項目の配列、行を表す)に保存します。dataパラメータは、ローカルデータ(datatype: "local")を使用する場合、またはリモートセット(datatype: "json"またはdatatype: "xml")からデータをロードする場合にのみ追加のオプションが付きます。loadonce: trueオプションが追加されます。あなたの行のデータが既に設定されている内部data、から内部JavaScriptオブジェクトへの直接参照を取得getLocalRow方法getCellgetRowDataアンフォーマット<td>から)細胞(単数または複数)からのデータと方法。したがって、グリッドにローカルデータがある場合は、getCellまたはgetRowDataの代わりにgetLocalRowを使用することをお勧めします。

関連する問題