DataTable + JEditable + AutoComplete(BAssistance)+服务器端处理

时间:2010-06-15 17:49:58

标签: jquery-plugins autocomplete datatables jeditable

经过几周的挣扎,我已经能够使用Json进行服务器端处理的DataTable + JEditable + AutoComplete(BAssistance)。 我认为那对那里的人有用。

$(document).ready(function() {
    $('#example tbody td').editable(
        function(value, settings) {
            processEventForTable(this, value);
            return(value);
        },
        "height": "20px"
    });
    oTableexample = $('#example').dataTable({
        "bInfo": true,
        "bProcessing" : true,
        "bServerSide" : true,
        "sAjaxSource" : "GetPaginationData.aspx",
        "sPaginationType": "full_numbers",
        "bPaginate"      : true,
        "fnServerData": function ( sSource, aoData, fnCallback ) {
            var data = {"name" : "kObjectId",
            "value" : definitionId};
            aoData.push(data);
            data =  { "name" : "ObjectName", "value" : "example" };
            aoData.push(data);
            data = { "name" : "InstanceId", "value" : instanceId };
            aoData.push(data);
            data = { "name" : "IsNewRequest", "value" : IsNewRowAdded};
            IsNewRowAdded = 0;
            aoData.push(data);
            debugger;
            $.ajax( {
                "dataType": 'json',
                "type": "Get",
                "url": sSource,
                "data": aoData,
                "success": fnCallback
            });
        },
        "fnDrawCallback" : function() {
            debugger;
            SetDataTableIDAndAttachJEditable("example");
            $('#example tbody td').editable( function(value, settings)
            {
                var aPos = oTableexample.fnGetPosition( this );
                processEventForTableNew(aPos[0], aPos[1], value, "example");
                return(value);
            }
            );
        }
    });
    $.editable.addInputType('autocomplete', {
        element : $.editable.types.text.element,
        plugin : function(settings, original) {
            $('input', this).autocomplete(settings.autocomplete.url, {
                dataType:'json',
                parse : function(data) {
                    return $.map(data, function(item) {
                        return {
                            data : item,
                            value : item.Key,
                            result: item.value
                        }
                    })
                },
                formatItem: function(row, i, n) {
                    return row.value;
                },
                mustMatch: false,
                focus: function(event, ui) {
                    $('#example tbody td[title]').val(ui.item.label);
                    return false;
                }
            });
        }
    });
    $("#example tbody td > span[title]").editable(
        function(value,settings){
            return value;
        },
        {
            type      : "autocomplete",
            tooltip   : "Click to edit...",
            autocomplete : {
                url : "autocompleteeg.aspx"
            }
        }
    );
});

此代码完美无缺。

DataTables使用服务器端处理。我正在将对JEditable的更改提交给javascript函数。从那里开始提交我将整个更改数组提交给服务器。

这段代码变得太长了,任何人都可以帮我重构它。 如果有更好的方法来完成同样的事情,那么我在等待它。 :)

1 个答案:

答案 0 :(得分:1)

是的很酷Dude! 您的代码中只是一个小的语法错误。

} , {  // opening bracket missing
    "height": "20px"
}

非常感谢