1

ユーザー プロパティを含む jqgrid があります。これらのプロパティは、ファーストネーム、ミドルネーム、ラストネーム、年齢、性別などです。ファーストネーム、ミドルネーム、ラストネームを別々に表示するのではなく、フルネームを表示したいです。したがって、このフィルネーム列には、ファーストネーム、ミドルネーム、ラストネームが連結されます。これを行う方法を教えてください。ありがとう

更新: struts 2 Web フレームワークを使用しています

        <s:url id="studentTableURL" namespace="/student" action="loadStudentsTable"/>
        <tr>
            <td>
                <sjg:grid id="studentGrid" caption="%{getText('studentsearch.title')}" dataType="json" href="%{studentTableURL}" pager="true"
                          gridModel="studentList"
                          rowList="10,15,20"
                          rowNum="15"
                          rownumbers="true"
                          onSelectRowTopics="rowselect"
                          >
                    <sjg:gridColumn name="id" align='left' index="id" title='Id' hidden="true"/>
                    <sjg:gridColumn name="studentNumber" width="100" align='left' index="studentNumber" title='%{getText("studentaction.studentnumber")}' sortable="true"/>
                    <sjg:gridColumn name="firstName" align='left' index="firstName" title='%{getText("studentaction.firstname")}' sortable="true"/>
                    <sjg:gridColumn name="lastName" align='left' index="lastName" title='%{getText("studentaction.lastname")}' sortable="true"/>
                    <sjg:gridColumn name="gender" align='left' width="80" index="gender" title='%{getText("studentaction.gender")}' sortable="true"/>
                    <sjg:gridColumn name="phoneNumber" align='left' width="100" index="phoneNumber" title='%{getText("studentaction.phonenumber")}' sortable="true"/>
                </sjg:grid>
            </td>
        </tr>
4

3 に答える 3

3

非表示にする:不要な列、つまり名、姓についてはtrue

次のように、name="id"を使用して追加の列のフォーマッターを実装します

function myFormatter(cellvalue, options, rowObject){
    return rowObject.firstName + " " + rowObject.lastName;
    ...
}
于 2012-04-11T18:49:16.907 に答える
1

あなたの質問は、私が今答えた別の質問に非常に近いものです。クライアント側で実行される JavaScript コードを投稿していないため、グリッドの定義を理解するのは少し難しいです。

新しい構成されfullNameた列をグリッド定義に追加し、クライアント側のデータで列を埋めることをお勧めしますbeforeProcessing. jqGrid がfullName入力のデータを表示するようにします。したがって、大きな努力をしなくてもすべてが機能するはずです。表示が必要ない場合は、グリッド定義から列firstNamelastName個別に削除できます。

カスタム フォーマッタの使用方法は、使用する他の設定によっても異なります。カスタム フォーマッタを作成するには、サーバー応答のデータの正確な形式を知ることが重要です。たとえば、repeatitems: falseプロパティを使用するかどうかを知ることが重要ですjsonReader。の正しい実装を記述するために知っておく必要があるのと同じ情報ですbeforeProcessing。このアプローチの最大の利点は、オプションを使用し、データのローカル ソートまたはフィルタリングを使用beforeProcessingする場合に見られます。loadonce: true

于 2012-04-11T21:59:48.533 に答える
0

最も簡単な解決策は、データ ソース (例: XML/JSON Web サービス) を変更して、そこに新しい列を追加することです。

または、カスタム フォーマッタで新しいfull_name列を使用してこれを実現することもできますが、フォーマッタ内から行内の他の列にアクセスするのは少し難しいため、ヘルパー関数が必要です。

function getRowObjectFromFormatter (key, rowObject){
    var searchHTML = function(){
        return jQuery(rowObject).find('td[aria-describedby*="' + key + '"]').text();
    }, tmp;

    if (rowObject.constructor != undefined){
        if (rowObject.constructor == Object){
            return rowObject[key];
        } else if (rowObject.constructor == HTMLTableRowElement){
            return searchHTML();
        }
    } else if (jQuery.browser.msie && jQuery.browser.version == "7.0"){
        // Hack to correctly extract data from an HTML table in IE7
        tmp = searchHTML();
        if (tmp != null && tmp.length > 1){
            return tmp;
        }
    }

    return jQuery(rowObject).find(key).text();
}

function myFormatter(cellvalue, options, rowObject){
    var otherColumn = getRowObjectFromFormatter('otherColumn', rowObject);
    ...
}
于 2012-04-11T13:34:42.230 に答える