【问题标题】:jQuery Grid with autocomplete带有自动完成功能的 jQuery Grid
【发布时间】:2009-12-18 00:59:36
【问题描述】:

我正在使用 jQuery 和 jQuery UI 构建一个 webapp。我陷入了僵局。我需要的是一个 jQuery 网格,它具有可编辑的字段,并且以某种方式在这些可编辑单元格之一上合并了一个自动完成字段,我似乎找不到任何实现此功能的网格产品。

我一直在研究 StickGridjgGrid

我特别喜欢 jqGrid,因为它已经准备好 Themeroller。有谁知道是否有人成功地在这些网格之一或任何其他 jquery 网格上集成了自动完成功能?

【问题讨论】:

    标签: jquery jquery-ui autocomplete


    【解决方案1】:

    我认为你想要的应该很容易实现。我为您制作了一个快速复制粘贴/窃取在一起的演示页面。

    如果您单击日期列,您将获得一个日历选择器。

    如果您单击“客户”列并删除内容,您将看到一个自动完成程序(css 不适合快速粘贴),其中列出了美国城市(我知道城市不是客户名称,只是一个演示)。

    代码取自jqGrid单元格编辑演示页面+jQuery Autocomplete演示页面

    http://jsbin.com/owatu(将/edit附加到网址以查看代码)

    当然,这个演示有点粗糙

    • CSS 问题
    • 如果用户在鼠标中使用箭头键+回车键,则在插入 afterSaveCell 以获取 jQgrid 以插入从自动完成器中选择的值时快速破解它无需破解即可工作

    我猜想在将 autocomplete 和 jqGrid 完全集成时可以删除 afterSaveCell hack。

    基本上可以归结为

    jQuery("#celltbl").jqGrid({
        ...
        {name:'name', width:100, editable:true}, //e.g.
        ...
        afterEditCell: function (id,name,val,iRow,iCol) {
            if(name=='name') {
                //cities here is local json object
                jQuery("#"+iRow+"_name","#celltbl").autocomplete(cities);
            }
        },
        afterSaveCell : function(rowid,name,val,iRow,iCol) {
            if(name == 'name') {
                jQuery("#celltbl").jqGrid('setRowData',rowid,{name:jQuery(".ac_over").text()});
                jQuery(".ac_results").remove();
            }
        }
        ...
    

    【讨论】:

    • 谢谢。我实际上正在寻找类似的东西。
    【解决方案2】:

    我还没有实现自动完成功能,但我使用过 jqGrid,它对 javascript 事件有很好的支持。

    例如: 如果您在其中一个单元格中放置一个 id 并希望在其他单元格中自动填充信息,您可以使用 afterEditCell 在这里你指定一个自定义函数,它将接收 rowid、cellname、value、iRow、iCol 并检查 iRow 是否与你的 id 相同,取该值并根据该值填充其他单元格。 - 基本上是自动完成

    或者可以使用 beforeEditCell 事件并创建自己的函数,该函数将接收 rowid、cellname、value、iRow、iCol 并将返回结果放置在单元格中。

    查看活动部分 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing

    祝你好运!

    【讨论】:

    • 这很有趣,如果我最终使用 jqGrid 会派上用场,但我想我并没有让自己完全清楚。我正在寻找的更像是来自可编辑单元格的下拉列表,其中填充了以当时已键入的文本开头的项目,并且用户可以单击下拉列表中的一个项目,因此该字段将自动完成。还没有时间看代码,但是可以将类似的东西改编成 jqGrid 吗?
    • 我认为它是可行的,你需要将一个 jquery onkeyup 事件附加到每个按键时调用 web 服务的单元对象。挑战在于如何从 beforeEditCell 中获取该对象,因为它只发送 rowid、cellname、value、iRow、iCol ......需要一些聪明的 jquery
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多