【发布时间】:2014-01-31 13:20:01
【问题描述】:
我的 colModel 对象是一个 json 序列化对象,代表以下 MovingRecord 类
public class CompanyData {
public string Code { get; set; }
public string Segment { get; set; }
public string CompetenceArea { get; set; }
}
public class MovingRecord {
public int MovingRecordID { get; set; }
public CompanyData FromCompanyData { get; set; }
public CompanyData ToCompanyData { get; set; }
public float FTE { get; set; }
}
在 jqGrid 配置中,我有以下 colModel:
colModel: [
{ name: 'FromCompanyData.Code', index: 'FromCompanyData.Code', width: 70, sortable: false, align: 'left', search: true, template: colTextTemplate },
{ name: 'FromCompanyData.Segment', index: 'FromCompanyData.Segment', width: 170, sortable: false, align: 'left', search: true, template: colTextTemplate },
{ name: 'FromCompanyData.CompetenceArea', index: 'FromCompanyData.CompetenceArea', width: 170, sortable: false, align: 'left', search: true, template: colTextTemplate },
{ name: 'ToCompanyData.Code', index: 'ToCompanyData.Code', width: 70, sortable: false, align: 'left', search: true, template: colTextTemplate },
{ name: 'ToCompanyData.Segment', index: 'ToCompanyData.Segment', width: 170, sortable: false, align: 'left', search: true, template: colTextTemplate },
{ name: 'ToCompanyData.CompetenceArea', index: 'ToCompanyData.CompetenceArea', width: 170, sortable: false, align: 'left', search: true, template: colTextTemplate },
{ name: 'FTE', index: 'FTE', width: 60, sortable: false, align: 'right', search: true, formatter: 'number', template: colFloatTemplate }
],
这完全符合预期。不幸的是,问题是当我尝试在这些字段上进行搜索时。由于记录本身的性质,成员FromCompanyData/ToCompanyData 可以是可为空的对象。
使用以下代码激活搜索:
grid.jqGrid('navButtonAdd', '#' + pagerID, {
caption: "", buttonicon: "ui-icon-search", position: "last", title: "Advanced search filters",
onClickButton: function () {
grid.jqGrid('searchGrid',
{ sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge', 'bw', 'cn'], closeOnEscape: true, multipleSearch: true, closeAfterSearch: true, recreateFilter: true });
}
});
当我尝试搜索时,我总是收到以下错误"{Field Name} : the field is required".
关于如何解决这个问题的任何帮助? 谢谢
编辑:
根据 Oleg 的评论,这是colTextTemplate的定义@
var colTextTemplate = {
sorttype: 'text',
align: 'left',
search: true,
stype: 'text',
searchoptions: { sopt: ['eq', 'ne', 'bw', 'cn'] },
searchrules: { required: true }
};
我尝试删除 required: true 选项并遇到了不同的行为。如果我删除此选项,原始错误会消失,但即使我用一些文本填充它,构建的过滤器也不包含数据字段。
比如过滤器是这样的
{
"_search":true,
"nd":1391184286612,
"rows":9999,
"page":1,
"sidx":"MovingRecordID",
"sord":"asc",
"filters":"{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"FromCompanyData.Code\",\"op\":\"eq\",\"data\":\"\"}]}","searchField":"","searchString":"","searchOper":""}
【问题讨论】:
-
你能把
colTextTemplate的定义包括进来吗? -
@Oleg:当然。请看看我的编辑!
-
@Oleg:我没有消息? :(
-
我完全忘记了这个问题:-(。我会根据我对问题的理解发布简短的答案。