相关疑难解决方法(0)

是否应该将jqGrid的使用addJSONData替换为setGridParam()和trigger('reloadGrid')的用法?

我最近写了一个问题" jqGrid显示默认"加载"更新表/自定义更新时的消息 "的答案.在编写答案时,我想:为什么他使用addJSONData()函数刷新网格中的数据而不是相对于setGridParam()更改URL 并刷新jqGrid数据相对于trigger('reloadGrid')?一开始我想推荐使用'reloadGrid',但在考虑了这一点后,我明白我不太确定最好的方法是什么.至少,我不能用两句话解释为什么我更喜欢第二种方式.所以我认为它可能是一个有趣的讨论主题.

确切地说:我们有一个典型的情况.我们有一个网页,其中包含至少一个jqGrid和一些其他控件,如组合框(选择),复选框等,这使用户可以更改jqGrid中显示的信息的范围.通常我们定义一些事件处理程序jQuery("#selector").change(myRefresh).keyup(myKeyRefresh) ,我们需要根据用户的选择重新加载jqGrid容器.

在阅读并分析来自其他用户输入的信息后,我们可以至少以两种方式刷新jqGrid容器:

  1. 调用$.ajax()手动然后在成功内部或完成$.ajax调用句柄jQuery.parseJSON()(或eval),然后调用jqGrid的addJSONData函数.我在stackoverflow.com上发现了很多使用addJSONData的例子.
  2. 根据用户的输入更新jqGrid的URL,将当前页码重置为1,并可选择更改网格的标题.所有这些都可以通过setGridParam()和可选的setCaption() jqGrid方法完成.最后调用网格的触发器('reloadGrid')函数.要构造url,顺便说一下我主要使用jQuery.param函数来确保,我已经为encodeURIComponent正确打包了所有url参数.

我希望我们讨论这两种方式的优缺点.我目前使用第二种方式,所以我将从这一方面的优势开始.

可以说:我调用现有的Web服务,将接收的数据转换为jqGrid格式并调用addJSONData.这就是我使用addJSONData方法的原因!

好的,我会选择另一种方式.jqGrid可以直接在Web服务上调用并在网格内填充结果.有很多jqGrid选项,允许您自定义此过程.

首先,可以删除或重命名发送到服务器关于任何标准参数prmNames的jqGrid的选项或对于添加任何额外的参数POSTDATA选项(参见http://www.trirand.com/jqgridwiki/ doku.php?id = wiki:options).$.ajax通过定义serializeGridData()函数(jqGrid的另一个选项),可以在jqGrid发出相应请求之前立即修改所有构造的参数.更重要的是,可以$.ajax通过设置jqGrid的ajaxGridOptions选项来更改每个参数.我用ajaxGridOptions: {contentType: "application/json"}例如作为一般设置$.jgrid.defaults.该ajaxGridOptions选项是非常强大的.对于ajaxGridOptions …

jquery jqgrid

28
推荐指数
1
解决办法
9918
查看次数

jqGrid:POST数据到服务器以获取行数据(过滤和搜索)

我有一个这样的表格:

<form id='myForm'>
<input type='text' name='search' />
<input type='text' name='maxPrice' />
</form>
Run Code Online (Sandbox Code Playgroud)

和我的jqGrid表:

<table id='myGrid'></table>
Run Code Online (Sandbox Code Playgroud)

我需要POST(不要GET)数据从myForm我的服务器方法,以获取行数据并填充网格.到目前为止,我还没有能够让jqGrid发布任何东西.我仔细检查了我的数据序列化,并正确地序列化我的表单数据.这是我的jqGrid代码:

$("#myGrid").jqGrid({
    url: '/Products/Search") %>',
    postData: $("#myForm").serialize(),
    datatype: "json",
    mtype: 'POST',
    colNames: ['Product Name', 'Price', 'Weight'],
    colModel: [
        { name: 'ProductName', index: 'ProductName', width: 100, align: 'left' },
        { name: 'Price', index: 'Price', width: 50, align: 'left' },
        { name: 'Weight', index: 'Weight', width: 50, align: 'left' }
    ],
    rowNum: 20,
    rowList: [10, 20, 30],
    imgpath: gridimgpath,
    height: 'auto',
    width: '700',
    //pager: $('#pager'), …
Run Code Online (Sandbox Code Playgroud)

jquery jqgrid

20
推荐指数
1
解决办法
6万
查看次数

jqGrid:使用多种方法过滤数据

我的要求是显示一个包含多个过滤器的页面以应用于网格数据.

假设我们正在谈论订单,订单具有以下属性

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之外的所有属性

要求是创建一个具有的视图

  • 左边的jqGrid
  • 右边的一个小组

在右侧面板中,用户将看到一个复选框列表,表示每个可能的OrderStatus值,并且他希望使用这两种方法进行搜索(例如,选中"已发货订单"复选框,然后使用大于某个值的金额过滤网格)

我已经multiplesearch:true在jqGrid对象中配置了高级过滤(),我可以创建组合字段和逻辑运算符的复杂过滤器.

有关如何在用户按下搜索按钮时从右侧面板提交数据的任何想法?

更新1:

序言:Oleg样品太棒了但不幸的是不符合我的客户要求:(

@Oleg:我不明白你为什么这么想:

如果数据位于网格之外,您将仅在选定行的右窗格中显示订单详细信息.因此,用户将不太了解数据.

也许我的描述不是那么清楚,但我不会显示任何订单细节.为了更好地阐明我的要求,我修改了您的示例,以显示所需的最终用户界面,如下图所示: UI就像客户想要的那样

客户希望使用两种方法或两者同时过滤网格中的数据:

  • 使用multiplesearch网格本身提供的设施(感谢提到的解决方法)
  • 使用自定义搜索面板(右侧带有复选框的面板)

从功能的角度来看,需求很容易表达:当用户单击复选框或使用本机进行搜索时,multiplesearch我应该将值发布到服务器,包括复选框状态.

总结一下,我应该:

  • 通过本机发布帖子时添加复选框状态 multiplesearch
  • multiplesearch当用户单击复选框时添加当前状态(如果有)

有没有办法做到这一点?

asp.net asp.net-mvc search jqgrid jqgrid-asp.net

9
推荐指数
1
解决办法
2万
查看次数

有没有办法在jquery jqgrid中以编程方式设置过滤器?

我有一个页面上有一个jqgrid,顶部有过滤行.我希望在另一个页面上有一个链接来加载这个网格页面,但是在其中一个列上设置了过滤器.可以通过链接或人们可以建议的任何其他解决方法来做到吗?

asp.net-mvc jquery jqgrid

8
推荐指数
1
解决办法
7008
查看次数

如何在构造jqgrid后设置postData?

我从模型类生成我的jqgrid,我将其传递给视图.我得到了构建和工作jqgrid.但是,在我调用helper创建jqgrid之后,我想在一个视图上设置postData,在那里我使用jqGrid,在该视图中使用脚本,而不必更改创建jqgrid的整个局部视图.

我试过跑步

$("#@Model.Id").jqGrid('setGridParam', { postData: { test: 233} });
Run Code Online (Sandbox Code Playgroud)

$("#@Model.Id").setGridParam({ postData: { test: 233} });
Run Code Online (Sandbox Code Playgroud)

但没有错误或任何结果.如果我在jqgrid参数中设置postData(在部分视图中构造它,它可以工作.

我还检查了网格存在,补充说

console.log($("#@Model.Id").size());
Run Code Online (Sandbox Code Playgroud)

在第一行之前,它显示1.

更新:这个.setGirdParam函数开始为我工作没有明显的原因,所以如果有人可以提供一些可以阻止这种工作的见解,我会接受回答.谢谢

jquery jqgrid jqgrid-asp.net

7
推荐指数
1
解决办法
4万
查看次数

jqGrid:如何调用'reloadGrid'来从外部过滤器刷新网格

我在jqGrid之外有过滤器,应该触发网格重新加载.这个条目让我对如何实现它有了一些很好的了解,使用postData选项:如何过滤jqGrid数据不使用内置的搜索/过滤器框 不幸的是代码片段是片段,我无法弄清楚整个序列是什么电话应该是.这是我当前方法的简要视图:

<script>
  $(document).ready(function() {
    $("#submit").click(function(e) {
      e.preventDefault();
      myGrid.trigger('reloadGrid');
    }); 
  });

var url="${servicesUrl}/projects";

var myGrid = $("#projectList").jqGrid({
    url: url,
    datatype: 'json',
    mtype: 'GET',  
    // ...
});
</script>
Run Code Online (Sandbox Code Playgroud)

我应该如何构建代码,以便每次单击"提交"按钮都会触发网格重新加载?一旦我解决了这个问题,我确信我能够添加posData部分,我的问题主要是整个调用顺序.我不确定哪个调用应该在ready()函数内部,以及如何正确调用'reloadGrid'.任何帮助非常感谢.

jqgrid

7
推荐指数
1
解决办法
3万
查看次数

关于JqGrid流程事件

只是想更好地了解JqGrid事件过程

  • beforeRequest
  • loadBeforeSend
  • serializeGridData
  • loadError
  • gridComplete
  • loadComplete

基于此事件

  • 如果我想在ajax请求中向服务器添加过滤器或额外参数,我应该在loadBeforeSend中执行吗?
  • 从服务器获取数据后,如果我想阻止数据显示在网格中(我想先进一步处理它,之后只显示处理过的数据),我应该在gridComplete中做到这一点吗?

因为我的工作要求我在向服务器发送请求时添加额外的参数,并且在收到数据之后,我需要阻止网格在网格上显示数据,以便我可以在显示处理数据之前进一步处理数据网格.但我似乎无法掌握JqGrid应该将我的功能放到哪个事件.

谢谢


编辑:

对于postData部分

loadBeforeSend: function() {
    if (sessionStorage.pathStates == "edit" && location.pathname.indexOf("list") > -1) {
        console.log("SUCCESS");
        loadFilter();
    }
},
Run Code Online (Sandbox Code Playgroud)

和loadFilter

function loadFilter() {
    var filter = JSON.parse(sessionStorage.filter);
    var filterInput = [],
        model = [],
        filters = {};
    filterInput = filter.filterInput;
    model = filter.model;
    var grid = filter.grid,
        page = filter.page,
        op = "bw",
        a = 0,
        b = 0; …
Run Code Online (Sandbox Code Playgroud)

jquery jqgrid

7
推荐指数
1
解决办法
2909
查看次数

jqGrid setSelect函数与参数化查询

我正在使用jqGrid,在编辑/添加功能上我希望在其中一个字段中有一个下拉列表.

如果我使用setSelect函数,这是有效的:

$grid->setSelect("title", "SELECT DISTINCT name,name as TestingName FROM template", true, true, false, array(""=>"All"));
Run Code Online (Sandbox Code Playgroud)

如何将参数传递给我的查询?我试过这些:

1-"SELECT DISTINCT name,name as TestingName FROM template where tempid = ?"

2- "SELECT DISTINCT name,name as TestingName FROM template where tempid = $rowid"

3-"SELECT DISTINCT name,name as TestingName FROM template where tempid = ". $rowid

具有以下功能:

if(isset ($_REQUEST["tempid"]))
    $rowid = jqGridUtils::Strip($_REQUEST["tempid"]);
else
    $rowid = "";
Run Code Online (Sandbox Code Playgroud)

php parameters jquery jqgrid

6
推荐指数
1
解决办法
4509
查看次数

Clientside上的jqGrid - 分页/编辑/排序查询

我正在尝试使用jqgrid构建一个系统,该系统在客户端执行所有操作,即使用AJAX检索JSON对象(使用C#/ .Net)并将其缓存在javascript变量中,然后从该缓存中填充多个网格(addRowData) ,取决于数据.这一切都很好.

但是,我现在在发现如何做一些更高级的事情时遇到了问题.

1)在没有服务器交互的情况下分页/排序数据.这可能吗?或者它是否需要我编写自定义分页功能(即当用户移动到第2页时,从缓存中获取下10条记录并使用它们更新网格).希望有一种自动方式来做到这一点?排序怎么样?阅读一些建议它完成服务器端的东西,但也许它们是旧文章?不确定.

2)允许用户在每一行上查看控件(主要是单选按钮和日期选择器),并将这些更改反映在缓存变量中.我查看了jqGrid的编辑功能,但这似乎是"点击/编辑/保存".理想情况下,我希望网格的初始显示显示,例如,每行显示一对单选按钮的列,用户只需单击他们感兴趣的那些(即他们不必明确地"编辑" "要查看/更改单选按钮的行.此数据在网格中更新,更重要的是在驱动网格的缓存变量中更新.是否有自动方法将每行的控件绑定到底层客户端数据集?如何在每个单元格中创建控件并将其值与单元格值相关联?

有人可以指出我正确的方向吗?

谢谢你提供的所有帮助,

法案

jquery jqgrid

5
推荐指数
1
解决办法
2万
查看次数

即使使用正确的参数也无法显示最后一页

我和jqgrid一起战斗了大约8天(或更长时间),我做了一切除了小小的事情.我有一个大型数据库,我试图按部分显示它.我的意思是,SQL查询被执行每当时间next,prev,last,first或者当用户输入一个页码.我管理了它,一切都是正确的,但现在网格没有显示正确的最后一页.我的意思是,即使有42页,它显示1中的1.

现在,当我输入页码时,网格正在刷新并显示正确的结果,但是寻呼机说的是1 of 1,5 of 1,依此类推.

我用过的是:

jQuery("#list").jqGrid({ 
        datatype: "jsonstring",
        datastr: JSON.stringify(gridDtls),
        jsonReader:{
          root: "rows",
          page: "page",
          total: "total",
          records: "records",
          repeatitems: false,
          id: "0"
        },
Run Code Online (Sandbox Code Playgroud)

我每次点击一个按钮时用来运行查询的代码都在这里(注意下面的代码仅在按下enter时工作,因为按钮处于非活动状态):

onPaging: function(pgButton){ 
            var status = returnUserStatus();
            var page1 = $(this).jqGrid("getGridParam", "page");
            var totalPages = $(this).getGridParam('lastpage');

            if(pgButton=="next_pager"){ 


            } 
            if(pgButton=="prev_pager"){ 


            } 
            if(pgButton=="last_pager"){ 

            }
            if(pgButton=="first_pager"){ 

            }else if((pgButton !="first_pager") && (pgButton !="last_pager") && (pgButton !="prev_pager") && (pgButton !="next_pager"))     

        },
Run Code Online (Sandbox Code Playgroud)

一切似乎都对我不对.为什么jqgrid没有返回正确的页面?我确信我错过了一些小的东西.请帮我!!!

jquery jqgrid

5
推荐指数
1
解决办法
824
查看次数

标签 统计

jqgrid ×10

jquery ×8

asp.net-mvc ×2

jqgrid-asp.net ×2

asp.net ×1

parameters ×1

php ×1

search ×1