4

1週間近く苦労した後、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関数に送信しています。そこから送信し、変更配列全体をサーバーに送信します。

このコードは長くなりすぎて、誰かが私がそれをリファクタリングするのを手伝ってくれるでしょうか。同じことを達成するためのより良い方法があれば、私はそれを待っています。:)

4

1 に答える 1

1

ええクールな男!コードの小さな構文エラーです。

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

どうもありがとう

于 2012-06-15T09:09:52.997 に答える