我的要求是显示一个包含多个过滤器的页面以应用于网格数据.
假设我们正在谈论订单,订单具有以下属性
public class Order {
public int OrderID
public DateTime OrderDate
public DateTime ShipmentDate
public int OrderTotal
public int OrderStatus
}
Run Code Online (Sandbox Code Playgroud)
在jqgrid对象中,我显示除OrderStatus之外的所有属性
要求是创建一个具有的视图
在右侧面板中,用户将看到一个复选框列表,表示每个可能的OrderStatus值,并且他希望使用这两种方法进行搜索(例如,选中"已发货订单"复选框,然后使用大于某个值的金额过滤网格)
我已经multiplesearch:true在jqGrid对象中配置了高级过滤(),我可以创建组合字段和逻辑运算符的复杂过滤器.
有关如何在用户按下搜索按钮时从右侧面板提交数据的任何想法?
更新1:
序言:Oleg样品太棒了但不幸的是不符合我的客户要求:(
@Oleg:我不明白你为什么这么想:
如果数据位于网格之外,您将仅在选定行的右窗格中显示订单详细信息.因此,用户将不太了解数据.
也许我的描述不是那么清楚,但我不会显示任何订单细节.为了更好地阐明我的要求,我修改了您的示例,以显示所需的最终用户界面,如下图所示:

客户希望使用两种方法或两者同时过滤网格中的数据:
multiplesearch网格本身提供的设施(感谢提到的解决方法)从功能的角度来看,需求很容易表达:当用户单击复选框或使用本机进行搜索时,multiplesearch我应该将值发布到服务器,包括复选框状态.
总结一下,我应该:
multiplesearchmultiplesearch当用户单击复选框时添加当前状态(如果有)有没有办法做到这一点?
我有一个带有列的jQGrid,我只想在添加新行时进行编辑.
我已经看到了如何在对话框中进行编辑和添加时如何执行此操作的示例,但有没有办法通过内联编辑执行此操作?
我尝试在beforeShowForm:中使用grid.setColProp(),但这不起作用(列保持只读,并且在添加对话框中不存在).
基于对话框的列启用/禁用示例:http:
//www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm
jqgrid中所有高级的一个问题.
我必须编写这个用例:
在jqGrid中有两个可编辑的列.我必须使用单元格编辑.用户单击一个可编辑单元格,当他按下" Enter "键时,我选择下一个可编辑单元格实际的单元格.
否则,当他点击" tab "键时,我选择下一个可编辑的单元格
总结 - 我需要像excel一样的确切行为.
如果我有更好的声誉,我可以上传一张图片来展示所需的情况.

非常感谢.
我看到在这段代码中,您可以在javascript中预设postdata过滤器.
postData: {
filters:'{"groupOp":"AND","rules":['+
'{"field":"invdate","op":"gt","data":"2007-09-06"},'+
'{"field":"invdate","op":"lt","data":"2007-10-04"},'+
'{"field":"name","op":"bw","data":"test"}]}'
}
Run Code Online (Sandbox Code Playgroud)
是否有任何API可以让你建立它.就像是:
jqgrid("#grid").addPostDataFilters("AND");
jqgrid("#grid").addFilteritem("field", "cn", "value");
jqgrid("#grid").addFilteritem("field1", "eq", "value2");
Run Code Online (Sandbox Code Playgroud)
帮助生成顶部postdata过滤器代码??
我试过这个,但它似乎不起作用:
.jqGrid("setGridParam", { editurl: "/Project/UpdateMe",
ondblClickRow: function (rowid) {
editProject(rowid); // window.location.href="/Project/Detail/"+rowid;
}
});
var grid = $("#grid");
var f = { groupOp: "AND", rules: [] };
f.rules.push({ field: "Name", op: "cn", data: "volat" });
grid.p.search = f.rules.length > 0;
$.extend(grid.p.postData, { filters: JSON.stringify(f) });
Run Code Online (Sandbox Code Playgroud)
我现在有这个工作(感谢Oleg)但是,如果某个原因,查找按钮有些空白(即使我认为我有一个高级过滤器设置)我添加了一张图片

我caption在jqGrid定义中设置了参数.我想知道是否有办法根据classjqGrid插件所附加的表元素的属性动态设置它.
HTML 1
<table id="myjqgrid" class="view"></table>
<div id="Pager"></div>
Run Code Online (Sandbox Code Playgroud)
HTML 2
<table id="myjqgrid" class="edit"></table>
<div id="Pager"></div>
Run Code Online (Sandbox Code Playgroud)
JQGrid定义
$("#myjqgrid").jqGrid({
caption: "" // this is what I want to set dynamically
})
Run Code Online (Sandbox Code Playgroud) 我使用jqGrid 3.6.4和jquery 1.4.2.在我的示例中,我正在遵循json数据格式,我想将这些json数据映射到jqgrid的行中
{
"page": "1",
"total": 1,
"records": "6",
"rows": [
{
"head": {
"student_name": "Mr S. Jack ",
"year": 2007
},
"sub": [
{
"course_description": "Math ",
"date": "22-04-2010",
"number": 1,
"time_of_add": "2:00",
"day": "today"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的jqgrid代码如下
jQuery("#"+subgrid_table_id).jqGrid({
url:"http://localhost/stud/beta/web/GetStud.php?sid="+sid,
dtatype: "json",
colNames: ['Stud Name','Year','Date'.'Number'],
colModel: [ {name:'Stud Name',index:'student_name', width:100, jsonmap:"student_name"},
{name:'Year',index:'year', width:100, jsonmap:"year"},
{name:'Date',index:'date', width:100, jsonmap:"date"},
{name:'Number',index:'number', width:100, jsonmap:"number"}
],
height:'100%',
jsonReader: { repeatitems : false, root:"head" },
});
Run Code Online (Sandbox Code Playgroud)
所以现在问题是我的数据,即student_name和year在"head"下,jqgrid可以找到这两个字段.同时其他两个列值,即日期和数字位于"子"下,甚至那些列我无法用jqgrid映射它
请帮助我如何在JQGrid中找到这些属性.
谢谢
我有一个有子网格的jqgrid.如何在不必单击加号的情况下展开子网格?
我遇到$("#jqgrid_id").expandSubGridRow(rowId);但不确定哪个rowId用于扩展子网格.
谢谢.
我创建了一个包含一些字段的jqGrid,例如:
job_id,名称等
我要做的是使得当点击job_id列中的值时,它会将它们重定向到:
job.php?job_id =(他们点击的值)
我开始尝试使用以下作为我的colModel:
{ name:'job_id', index:'job_id', edittype:'select', formatter:'showlink',
formatoptions:{baseLinkUrl:'job.php'}, width:50, align:'center' }
Run Code Online (Sandbox Code Playgroud)
但是这会导致重定向到:
job.php?JOB_ID =(ROW_ID)
我做了一些搜索,发现这个软件的开源版本开发人员的帖子建议使用以下colModel和其他JS:
{ name:'job_id', index:'job_id', edittype:'select', formatter:'showlink',
formatoptions:{baseLinkUrl:'#'}, width:50, align:'center' }
loadComplete: function() {
var myGrid = $("#home_list");
var ids = myGrid.getDataIDs();
for (var i = 0, idCount = ids.length; i < idCount; i++) {
$("#"+ids[i]+" a",myGrid[0]).click(function(e) {
var hash=e.currentTarget.hash;// string like "#?id=0"
if (hash.substring(0,5) === '#?id=') {
var id = hash.substring(5,hash.length);
var text = this.textContent;
location.href="job.php?id="+text;
}
e.preventDefault();
});
}
}
Run Code Online (Sandbox Code Playgroud)
但这与IE不兼容.除此之外,当在jqGrid中显示大量行时,加载需要很长时间,比如5秒+ …
我正在使用Entity Framework 4构建一个ASP.Net MVC 3应用程序.当执行下面两段代码时,两个变量(query1和query2)的返回类型都是
System.Data.Objects.ObjectQuery<Asset.Model.Equipment>
Run Code Online (Sandbox Code Playgroud)
Query1使用ObjectContext的直接实例,但是,Query2使用存储库模式,即它在EquipmentService中调用GetEquipment,后者又在Equipment Repository中调用相同的命名方法.Service和Repository中的两个方法都返回
IQueryable<Equipment>
Run Code Online (Sandbox Code Playgroud)
如何,这是我的问题,为什么query2只有在我包含时才会起作用
using System.Linq.Dynamic;
Run Code Online (Sandbox Code Playgroud)
在我的控制器的顶部
using (AssetEntities context = new AssetEntities())
{
var query1 = context.Equipments
.OrderBy("it." + sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize);
}
var query2 = equipService.GetEquipment()
.OrderBy(sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize);
Run Code Online (Sandbox Code Playgroud)
如果我从我的控制器omitt System.Linq.Dynamic,我在Query2中得到一个错误
.OrderBy(sidx + " " + sord)
Run Code Online (Sandbox Code Playgroud)
哪个州
The type arguments for method 'System.Linq.Queryable.OrderBy<TSource,TKey>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,TKey>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么query1可以工作而不必使用System.Linq.Dynamic,但是query2需要它来执行? …
linq-to-entities jqgrid dynamic-linq entity-framework-4 asp.net-mvc-3
我的数据库中有true/false值.我想用jqgrid中的复选框更新它们.一旦该值设置为true,它将保持为真且不应更改.请看一下我的专栏模型:
{
name : 'available',
width : 12,
resizable: true,
editable: true,
align: 'center',
edittype:'checkbox',
formatter: "checkbox", formatoptions: {disabled : false},
classes:'check',
editrules:{required:false}, editoptions:{size:39,value:"True:False"}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试在选中复选框时捕获事件,目前它们都未经检查,到目前为止我已经尝试过:
jq(".check input").each(function(){
jq(this).click(function(){
aler("works");
});
});
jq("input[type='checkbox']").change(function(){
alert("works");
});
jq(":checkbox").parent().click(function(evt) {
if (evt.target.type !== 'checkbox') {
var $checkbox = jq(":checkbox", this);
$checkbox.attr('checked', !$checkbox.attr('checked'));
$checkbox.change();
alert("");
}
});
Run Code Online (Sandbox Code Playgroud)
这些都不起作用,我被卡住了不知道还有什么可以尝试.
使用firebug检查复选框代码时,它看起来像这样:
<input type="checkbox" offval="no" value="false">
Run Code Online (Sandbox Code Playgroud) jqgrid ×10
jquery ×5
javascript ×2
json ×2
subgrid ×2
asp.net ×1
asp.net-mvc ×1
dynamic-linq ×1
editing ×1
hyperlink ×1
jqgrid-php ×1
search ×1