Javascript 单击按钮时加载jqGrid,但第二次失败

Javascript 单击按钮时加载jqGrid,但第二次失败,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我正在使用jqGrid显示数据库中的数据。有两个文本框用于输入标准。输入条件并单击Show按钮后,jqGrid将显示到页面 第二次我用输入的另一组条件单击Show按钮时,什么也没有发生。它仍然显示第一次单击时的数据。我如何解决这个问题 视图: 重要的是要了解,当前代码在创建网格时设置了一个值postData。postData参数的值将是在创建网格时评估属性的对象 要修复代码,需要使用函数作为postData属性的值: postData: { "CallTransaction.ExtUse

我正在使用jqGrid显示数据库中的数据。有两个文本框用于输入标准。输入条件并单击Show按钮后,jqGrid将显示到页面

第二次我用输入的另一组条件单击Show按钮时,什么也没有发生。它仍然显示第一次单击时的数据。我如何解决这个问题

视图:


重要的是要了解,当前代码在创建网格时设置了一个值
postData
postData
参数的值将是在创建网格时评估属性的对象

要修复代码,需要使用
函数
作为
postData
属性的值:

postData: {
    "CallTransaction.ExtUsed": function () { return $("#extUsed").val(); },
    "CallTransaction.StartOfCall": function () { return $("#startOfCall").val(); }
}
有关更多详细信息,请参阅。为了理解:jqGrid使用内部和
jQuery。ajax
使用助手函数处理
数据
参数(使用
postData
构造)和
jQuery.param
执行函数,如果它是
数据
postData
)的属性

此外,我还严格建议您在所有网格中使用
gridview:true
选项(请参阅),添加
autoencode:true
以将输入数据解释为数据而不是HTML片段(这是默认行为),并使用
pager:“#pager”
而不是
pager:jQuery(#pager”)


<>我建议您从<代码> CalMeult>代码>中删除所有<代码>索引>代码>属性,并考虑从服务器返回的数据中包含附加的<代码> ID <代码>属性,该属性来自数据库中的唯一值。如果网格的某些列已经包含唯一值,则可以将
key:true
属性添加到相应列的定义中。如果您知道jqGrid必须将
id
属性分配给网格的每一行,那么这些更改的原因很容易理解。
id
属性的值必须是唯一的。该值在文档中用作rowid,将在jqGrid的大多数回调中用于标识行。如果以后要执行数据编辑,将向服务器发送相同的值。如果未在输入数据中指定任何rowid,jqGrid必须为
id
指定一些其他值。默认值将为1,2,3。。。另一方面,如果从数据库加载数据,则具有行的本机ID。使用本机ID可以在将来“简化您的生活”。

它可以工作。谢谢你的解释,这对我来说是新的。顺便说一下,我刚刚找到了另一个有效的解决方案,它使用了
$(“#grid”).GridUnload()。我在
e.preventDefault()之后调用。你怎么看,这也是另一种正确的方法,或者应该如何使用?@Willy:我建议你使用更好的
reloadGrid
<代码>$(“#网格”).GridUnload()做太多的事情。仅当您需要在旧网格的位置上创建具有其他列的新网格时,建议使用
GridUnload
public JsonResult GetCallTransactionList(CallTransaction callTransaction, string sidx, string sord, int page, int rows)
{
    int pageIndex = page - 1;
    int pageSize = rows;
    var callTransactionResult = db.Search(callTransaction);
    int totalRecords = callTransactionResult.Count();
    var totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
    if (sord.ToUpper() == "DESC")
    {
        callTransactionResult = callTransactionResult.OrderByDescending(ct => ct.ExtUsed).ToList();
        callTransactionResult = callTransactionResult.Skip(pageIndex * pageSize).Take(pageSize).ToList();
    }
    else
    {
        callTransactionResult = callTransactionResult.OrderBy(ct => ct.ExtUsed).ToList();
        callTransactionResult = callTransactionResult.Skip(pageIndex * pageSize).Take(pageSize).ToList();
    }
    var jsonData = new
    {
        total = totalPages,
        page,
        records = totalRecords,
        rows = callTransactionResult
    };
    return Json(jsonData, JsonRequestBehavior.AllowGet);
}
postData: {
    "CallTransaction.ExtUsed": function () { return $("#extUsed").val(); },
    "CallTransaction.StartOfCall": function () { return $("#startOfCall").val(); }
}