我有一个包含用户属性的jqgrid。这些属性是firstname,middlename,lastname,age,gender等。我想显示全名,而不是分别显示firstname,middlename和lastname。因此,此填充名称列将连接firstname,middlename和lastname。请问我该怎么做。 感谢
更新: 我正在使用struts 2 web framework
<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>
答案 0 :(得分:3)
隐藏:对于您不想要的列,即firstname,lastname
,为true为name =“id”的额外列实现格式化程序,如下所示
function myFormatter(cellvalue, options, rowObject){
return rowObject.firstName + " " + rowObject.lastName;
...
}
答案 1 :(得分:1)
你的问题非常接近我刚刚回答的another one。我理解网格定义有点困难,因为您没有发布任何将在客户端运行的JavaScript代码。
我建议您将新的组合列fullName
添加到网格定义中,并使用beforeProcessing
内的客户端数据填充列。顺便说一句,jqGrid只会在输入中看到fullName
的数据。所以一切都应该没有大的努力。如果您不需要单独显示firstName
和lastName
,则可以从网格定义中删除列。
使用自定义格式化程序的方式也可以依赖于您使用的其他设置。要编写自定义格式化程序,了解服务器响应中数据的确切格式非常重要。例如,了解您是否在repeatitems: false
中使用jsonReader
属性非常重要。编写beforeProcessing
正确实现时需要了解的相同信息。如果您使用beforeProcessing
选项并使用本地排序或过滤数据,您将会看到loadonce: true
方法的最大优势。
答案 2 :(得分:0)
最简单的解决方案是修改数据源(EG: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);
...
}