JqG​​rid自定义搜索工具栏事件处理程序

时间:2013-04-22 16:21:49

标签: events search jqgrid

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

当下拉列表发生更改时问题到了,虽然大多数过滤/搜索是在客户端完成的,我需要下拉列表来触发一个调用,该调用将使用新添加的参数刷新页面下拉列表。

我附上了构建工具栏搜索的代码部分,但我不知道如何在更改选择值时添加捕获事件处理程序的功能,在这个实例中我需要一个非标准代码执行 - 例如函数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"
        }
    },

在搜索选项(或colModel)中的哪个位置我会放置onChange事件处理程序?

1 个答案:

答案 0 :(得分:4)

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

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

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
            }
        }
    ]
}