jQuery.Ajaxを介してJSonとしてデータを取得しようとするときにSlickGridを使用する方法の簡単な例を探しています。また、SlickGridプラグインのドキュメントを見つけることができず、間違った場所を探しているだけなのかと思っていました。SlickGridを使い始めるための助けをいただければ幸いです。
4 に答える
SlickGridリポジトリのAJAXの例は、キャッシュなどでトリッキーにしようとしているため、非常に複雑です。たとえば、すでに送信されたすべての行を追跡し、サーバーに新しい行のみを要求します。また、Diggストーリーの特定の例のためにハードコーディングされています。ドキュメントが非常に不足しており、バージョン1.5以降のjQuery(ajaxの処理方法が変更された)にはバグがあるようです。
SlickGridのAndrewChildsフォークを使用することで、始めるのがはるかに簡単になりました。これには、READMEの下部にあるAJAXの使用方法に関する非常に単純でわかりやすい手順が含まれています。
asp.netページ内の例。WebサービスmyDataは、グリッド列と一致する必要があるjson文字列を返します。
$(function () {
$.ajax({
url: "WS.asmx/myData",
global: false,
type: "POST",
data: "{}",
contentType: "application/json",
dataType: "json",
async: false,
success: function (json) {
data = eval('(' + json.d + ')');
if (!data) { alert('no data'); };
},
error: function (msg) {
var errorText = eval('(' + msg.responseText + ')');
alert('Error : \n--------\n' + errorText.Message);
}
}
);
if (data) {
dataView = new GridNic.Data.DataView();
grid = new GridNic.Grid($("#myGrid"), dataView.rows, columns, options);
var pager = new GridNic.Controls.Pager(dataView, grid, $("#pager"), columns);
var columnpicker = new GridNic.Controls.ColumnPicker(columns, grid, options);
... 等々
Asp.Netでは、json文字列のサイズはデフォルトで制限されています。問題が発生した場合は、web.configでより大きなサイズを宣言する必要があります。例:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="5000000">
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
解決策は単純ですが、wikiページでこれを行う方法を明示的に述べていません。
SlickGridは、JSONがオブジェクト形式であることを想定しています。したがって、何らかの理由で文字列形式の場合は、次を使用してください。
JSON.parse(jsonString);
ajaxからロードしている場合は、次のようにします。
$.getJSON("file.json", function(data) {
grid = new Slick.Grid("#myGrid", data, columns, options);
}