【问题标题】:JqGrid custom search toolbar event handlersJqG​​rid 自定义搜索工具栏事件处理程序
【发布时间】:2013-04-22 16:21:48
【问题描述】:

我已经创建了一个带有下拉列表的 jqGrid 网格,这个列表(由于开发人员的限制)需要加载一次,以便可以过滤所有返回的数据,到目前为止这一切都很酷,

当下拉列表更改时,问题就来了,尽管大部分过滤/搜索都是在客户端完成的,但我需要下拉列表来触发调用,该调用将使用新添加的参数刷新页面下拉列表。

我已经附上了构建工具栏搜索的代码部分,但我不知道如何添加功能以在更改选择值时捕获事件处理程序,在这种情况下,我需要一个非标准代码执行 - 例如函数 callNewData()

colNames:["Rent Due Date ","Tenant","Description","Address","Payment Ref.","Rent     Amount","Outstanding","Amount     Received","Confirm?","tenancyID","tenantID","rentID","existingRent"],
    colModel :[{
        name:"rentDueDate", 
        index:"rentDueDate", 
        align:"center", 
        width:"130", 
        search:true, 
        stype:"select",
        searchoptions: {
            value: "all:All;due:Due;overdue:Overdue;future:+1 Week;" ,
            defaultValue:"due"
        }
    },

我会将 onChange 事件处理程序放在搜索选项(或 colModel)的什么位置?

【问题讨论】:

  • 您目前如何更改下拉列表中的值?

标签: events search jqgrid


【解决方案1】:

抱歉,目前尚不清楚您的具体问题是什么。如果用户从下拉列表中选择一个选项,则 jqGrid 自动 使用用户选择的过滤器重新加载网格。如果您使用本地datatype,则过滤将由 jqGrid 在内部完成。如果您使用datatype: "json"datatype: "xml" 而不使用loadonce: true,则jqGrid 向服务器发送请求,将有关过滤器的信息附加到标准参数列表中。

如果您确实需要在<select> 中处理onChange 事件,那么您需要在dataEvents 中定义change 事件处理程序:

searchoptions: {
    value: "all:All;due:Due;overdue:Overdue;future:+1 Week;",
    defaultValue: "due",
    dataEvents: [ 
        {
            type: "change",
            fn: function (e) {
                // some code which will be executed onChange
            }
        }
    ]
}

【讨论】:

  • 嗨,它需要查看,但结果是如果从下拉菜单中选择日期[下拉工具栏然后网格需要从服务器端重新加载,而不是从JSON 存储的数据,任何其他过滤/搜索都可以使用标准客户端的东西来完成。如果选择,它会阻止搜索/过滤器执行客户端搜索,我确信上面的 dataevent 示例会这样做,因为我可以使用新日期重置查询字符串并重新加载页面,任何其他列都会正常运行
  • @Jimmyborofan:从您上一条评论中可以间接看到,您在问题中发布的代码不包含问题的根源。貌似你用了loadonce: true,但是你用错了。您应该在问题的文本后面附加更多 JavaScript 代码。重要的是您将另外描述您在服务器端实现的功能:排序、分页、过滤。同样重要的是,您将编写在 jqGrid 中显示的完整数据(所有分页,未过滤)有多大(100、1000、10000、100000 或更多)。
  • 您好,感谢您在经过大量尝试后的回复查看并了解如何正确使用 dataevent,这有点烦人,我现在已经被放在另一个项目上,但它在我的清单中要回去;)
  • @Jimmyborofan:不客气!如果您在新项目中遇到新问题,您可以询问新问题,在哪里详细描述问题。 dataEvents 的用法很简单。它指定您需要注册的事件的array。因此,您可以在一个<select> 上注册例如changekeydown 事件。
猜你喜欢
  • 2011-07-17
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
相关资源
最近更新 更多