Jquery 我可以使用可见列中的输入按隐藏列中的值过滤jqGrid吗?
我的jqGrid使用loadonce:true,并有一对列,我正试图根据它们进行筛选DeletedFlag'是带有位标志的隐藏列。“已删除”列可见,并且不显示任何内容(DeletedFlag==0)或时间戳(DeletedFlag==1) 是否有一种方法可以像我在下面的代码示例中尝试的那样,将筛选器输入从“Deleted”映射到“DeletedFlag”?如果没有,是否有方法更改“已删除”编辑选项->值字符串以启用空字符串或非空字符串过滤Jquery 我可以使用可见列中的输入按隐藏列中的值过滤jqGrid吗?,jquery,asp.net,jqgrid,Jquery,Asp.net,Jqgrid,我的jqGrid使用loadonce:true,并有一对列,我正试图根据它们进行筛选DeletedFlag'是带有位标志的隐藏列。“已删除”列可见,并且不显示任何内容(DeletedFlag==0)或时间戳(DeletedFlag==1) 是否有一种方法可以像我在下面的代码示例中尝试的那样,将筛选器输入从“Deleted”映射到“DeletedFlag”?如果没有,是否有方法更改“已删除”编辑选项->值字符串以启用空字符串或非空字符串过滤 { name: 'DeletedFlag', index
{ name: 'DeletedFlag', index: 'DeletedFlag', hidden: true, searchoptions: { sopt: ['eq'], searchhidden: true }},
{
name: 'Deleted?', index: 'DeletedFlag', width: 70, sortable: false, editable: false,
stype: 'select', /*edittype: 'checkbox',*/ searchoptions: { value: ':All;0:No;1:Yes' }
}
编辑:发布整个网格+测试数据
$(function () {
var grid = $("#PSGrid");
// get values from Products table
var prodValues = $.ajax({
url: "jqGridHandler.ashx?oper=pVals",
async: false,
success: function (data) {
}
}).responseText;
// get values from Environments table
var envValues = $.ajax({
url: "jqGridHandler.ashx?oper=eVals",
async: false,
success: function (data) {
}
}).responseText;
// get values from ServerTypes table
var typeValues = $.ajax({
url: "jqGridHandler.ashx?oper=tVals",
async: false,
success: function (data) {
}
}).responseText;
var lastsel = -1;
// build the grid
grid.jqGrid({
url: 'jqGridHandler.ashx',
editurl: 'jqGridEditor.ashx',
datatype: 'json',
height: 550,
width: 'auto',
colNames: ['ID', 'Product', 'Environment', 'Hostname', 'IP', 'Description', 'Type', 'Ports Used', 'DeletedFlag', 'Deleted?'],
colModel: [
{ name: 'ID', index: 'ID', width: 50, sortable: true, hidden: true, editable: false, key: true, sorttype: 'int' },
{
name: 'Product', index: 'Product', width: 125, sortable: true, editable: true,
stype: 'select', searchoptions: { value: ':All;' + prodValues, sopt: ['eq'] },
formatter: 'select', edittype: 'select', editoptions: { value: prodValues },
editrules: { required: true }
},
{
name: 'Environment', index: 'Environment', width: 100, sortable: true, editable: true,
stype: 'select', searchoptions: { value: ':All;' + envValues, sopt: ['eq'] },
formatter: 'select', edittype: 'select', editoptions: { value: envValues },
editrules: { required: true }
},
{
name: 'Hostname', index: 'Hostname', width: 200, sortable: true, editable: true,
editrules: { required: true }
},
{
name: 'IP', index: 'IP', width: 125, sortable: false, editable: true
},
{
name: 'Description', index: 'Description', width: 200, sortable: true, editable: true,
editrules: { required: true }
},
{
name: 'Type', index: 'Type', width: 75, sortable: true, editable: true,
stype: 'select', searchoptions: { value: ':All;' + typeValues, sopt: ['eq'] },
formatter: 'select', edittype: 'select', editoptions: { value: typeValues },
editrules: { required: true }
},
{ name: 'Ports Used', index: 'Ports Used', width: 80, sortable: false, editable: true },
{ name: 'DeletedFlag', index: 'DeletedFlag', hidden: true, searchoptions: { sopt: ['eq'], searchhidden: true }},
{
name: 'Deleted?', index: 'Deleted?', width: 70, sortable: false, editable: false,
stype: 'select', /*edittype: 'checkbox',*/ searchoptions: { value: ':All;0:No;1:Yes' }
}
],
rowNum: 10000, // show all rows hack (-1 is the proper way to do it but is bugged in this version of jqGrid)
pager: '#PSGridPager',
sortname: 'ID',
pgbuttons: false,
pgtext: null,
viewrecords: false,
sortorder: 'asc',
ignoreCase: true,
caption: 'Click a row to edit. [Enter] to save, [Esc] to cancel.',
loadonce: true,
onSelectRow: function (id) {
if (id && id !== lastsel) {
grid.jqGrid('restoreRow', lastsel);
grid.jqGrid('editRow', id, true);
lastsel = id;
}
},
afterSubmit: function (response, postdata) {
$(this).jqGrid('setGridParam', { datatype: 'json' });
alert('hello');
return [true];
}
});
grid.jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true, defaultSearch: "cn" });
grid.jqGrid('navGrid', '#PSGridPager', { edit: false, add: true, del: true, search: false, refresh: true, paging: false },
{ /* edit options */ },
{ /* add options */
closeOnEscape: true,
closeAfterAdd: true,
reloadAfterSubmit: true,
width: 400
},
{ /* delete options */
closeOnEscape: true,
reloadAfterSubmit: true
});
grid.jqGrid('navButtonAdd', '#PSGridPager', {
caption: "Export to Excel",
onClickButton: function () {
grid.jqGrid('excelExport', { url: "jqGridHandler.ashx" });
}
});
});
典型行(逗号分隔):
“A4”、“Test/QA”、“BLDALTSGPOOFF04”、“192.168.86.190”、“IIS 7 Web场”、“Web”、“80”和“在我看来,您只需在“IsDeleted”列中使用
名称:“IsDeleted”,索引:“DeletedFlag”
。我建议您将name:'Ports Used',index:'Ports Used'
重命名为name:'PortsUsed',index:'PortsUsed'
(名称中不要使用空格)
似乎可以根据需要筛选数据。我在演示中使用了JSON数据
[
["10", "A4", "Test/QA", "BLDALTSGPOOFF04", "192.168.86.190",
"IIS 7 Web Farm", "Web", "80", "0", ""],
["20", "A5", "Test/QA", "BLDALTSGPOOFF05", "192.168.86.178",
"IIS 6 Web Farm", "Web", "8080", "1", "2013-06-26 17:02:02.843"]
]
作为网格的输入
还有一条建议。在创建网格之前,当前使用3个同步Ajax调用(
async:false
)。我假设您不能使用dataUrl
,因为您使用formatter:'select'
,并且您希望在服务器的JSON响应中显示其他数据。这种行为是不好的。我建议您放置与来自jqGridHandler.ashx
的主JSON响应部分相同的信息。在预处理
回调内部,您可以访问数据,并可以使用方法更改编辑选项
或搜索选项
的值
属性。如果您在处理回调之前在中做了这样的更改,那么您在处理JSON响应之前做了这样的更改。因此jqGrid将使用value
properties的修改值。一切都是可能的,但需要知道从服务器返回的数据看起来如何?从服务器返回哪些输入数据的网格列?您是否使用filterToolbar
或其他搜索工具?顺便说一下,'Deleted?
作为name
的值是非常糟糕的。您应该理解JavaScript对象属性的名称以及用于为元素构建id
属性的名称等值。您应该使用标识符的典型值。如果loadonce:true
或使用datatype:“local”
,则index
属性的值必须与name
的值相同。我很高兴看到这一点。你能给出你使用的测试数据的例子吗?您使用哪种搜索?是不是只有过滤工具栏?强大的Oleg!我在这个网站上读了很多你的jqGrid答案。:)我确实用过过滤器工具栏。这两列都从服务器接收数据。DeletedFlag接收“0”或“1”的值。删除?单元格接收空字符串或时间戳,如“2013-06-26 17:02:02.843”。当DeletedFlag='0'时,是否删除?包含空字符串。确定!很清楚。您使用输入数据的数组样式(在jsonReader
中使用默认的repeatitems:true
)还是对象样式(repeatitems:false
)?我不熟悉repeatitems属性。它必须是默认值,因为我没有在任何地方定义它。谢谢Oleg。上周我第一次开始使用jQuery,您的所有评论都非常有用。@pelotron:不客气!我希望您在处理之前理解我的建议。如果你在执行上有问题,你可以问新问题。我正在尝试执行你的建议。。。我们将拭目以待。