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

隐藏:对于您不想要的列,即名字,姓氏

为具有 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 回答