jqGrid addRowData不会触发afterInsertRow

时间:2017-06-16 18:24:19

标签: free-jqgrid

我将jqGrid从4.7.1升级到4.14

这是我初始化网格的脚本

is_symlink()

这是我在网格中添加新行的地方

data = []
for i in raw_data[:10]:
    scored = i.date_scored
    scored_date =  pd.to_datetime(scored, format='%Y-%m-%d %H:%M')
    if scored_date == "NoneType":
        print("none")
    elif scored_date.year >= 2016:
        extracted = i.date_extracted
        extracted_date =  pd.to_datetime(extracted, format='%Y-%m-%d 
        %H:%M')
        bank = i.bank.name
        diff = scored_date - extracted_date
        print(diff)
        datum = [str(bank), str(extracted), str(scored), str(diff)]
        data.append(datum)
    else:
        pass

添加了新行,但未触发afterInsertRow事件。为什么会这样?我的代码中有错误吗?

1 个答案:

答案 0 :(得分:1)

免费jqGrid支持afterAddRowafterSetRowafterDelRow回调,这些回调将在addRowDatasetRowDatadelRowData结束时调用方法。 free jqGrid引入的最新回调函数有一个参数(例如options),这些参数包含其他信息。它允许仅使用需要的属性,如果只需要使用旧式回调的最后一个参数,则无需插入不需要的第一个参数。此外,新式的回调参数允许在未来的免费jqGrid版本中轻松扩展选项。

因此,您可以将afterInsertRow: function (rowid) {更改为afterAddRow: function (options) { var rowid = options.rowid;

一般情况下,我建议您对代码进行更多更改。你在afterInsertRow内做的是创建自定义操作按钮。你的代码很长很慢,因为jqGrid 4.7没有简单的方法来创建自定义操作按钮。免费jqGrid支持该功能。我建议您阅读the wiki article,以检查the demothis one的代码以及the answer中包含的演示。您将看到创建操作按钮非常简单。您可以完全控制onClick回调。