3

Webメソッド:

   <WebMethod()>
   Public Shared Function Pcpacking() As IEnumerable(Of Packing)
   Dim db As New STOREEntities
   Return db.PC_PACKING_HISTORIES. _
   Where(Function(q) q.PACK_DATE > "1388/11/07"). _
   Select(Function(q) New Packing _
              With {.Packdate = q.PACK_DATE,
                    .Packserialnumber = q.PACK_SERIAL_NUMBER,
                    .Netweight = q.NET_WEIGHT,
                    .Packusername = q.PACK_USER_NAME}).ToList()
   End Function

脚本:

$(function () {
       $("#grid").kendoGrid({
           height: 200,
           columns: [
                { field: "Packserialnumber", width: "150px" },
               { field: "Netweight", width: "50px" },
               { field: "Packusername", width: "150px" },
               { field: "Packdate", width: "100px" }
           ],
           editable: false,
           dataSource: {
               schema: {
                   data: "d",
                   model: {
                       id: "Packserialnumber",
                       fields: {
                           Packserialnumber: { editable: false, nullable: true },
                           Netweight: { type: "number", validation: { required: true, min: 1} },
                           Packusername: { validation: { required: true} },
                           Packdate: { validation: { required: true} }
                       }
                   }
               },
               batch: false,
               transport: {
                   read: {
                       url: "Default.aspx/Pcpacking",
                       contentType: "application/json; charset=utf-8",
                       type: "POST"
                   }
               }
           }
       });
   });

この条件(PACK_DATE> "1388/11/07" 366レコード)ではすべてが正常に機能します。ただし、日付を1388/11/061260レコードまたは1388/11/055460レコードに変更すると、次のエラーが発生します。

{"メッセージ": "JSONJavaScriptSerializerを使用したシリアル化または逆シリアル化中にエラーが発生しました。文字列の長さがmaxJsonLengthプロパティに設定された値を超えています。"、 "StackTrace": "at System.Web.Script.Serialization.JavaScriptSerializer。Serialize( Object obj、StringBuilder出力、SerializationFormat serializationFormat)\ r \ n at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj、SerializationFormat serializationFormat)\ r \ n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContextコンテキスト、WebServiceMethodData methodData、IDictionary`2 rawParams)\ r \ n
System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context、WebServiceMethodData methodData) "、" ExceptionType ":"System.InvalidOperationException"}で

剣道グリッドは巨大なデータをサポートしていないと思います。何か提案はありますか?
私の悪い英語でごめんなさい。

4

2 に答える 2

2

問題は、実際には、結果のJSON文字列が100 kBより大きい場合、デフォルトで.NETJSONシリアライザーが例外をスローすることです。明らかに、何千ものレコードを送信することは制限を超えています。この設定は変更できますが、アプリケーションにはお勧めしません。

代わりに、一度にデータの小さなチャンクを要求するようにグリッドを構成します。スクロールするとより多くのデータをロードするように剣道グリッドを構成できるようです。

$("#grid").kendoGrid({
    dataSource: {
        type: "odata",
        serverPaging: true,
        serverSorting: true,
        pageSize: 100,
        transport: {
            read: {
                url: "Default.aspx/Pcpacking",
                contentType: "application/json; charset=utf-8",
                type: "POST"
            }
        }
    },
    scrollable: {
        virtual: true
    },

    ...
});

サーバーサイドスクリプトは、Kendoが送信する(top送信するレコードの数)および(開始する場所)パラメーターを処理する必要があります。skip

于 2012-05-19T16:12:09.967 に答える
0
$(function () {
       $("#grid").kendoGrid({
           height: 200,
           columns: [
                { field: "Packserialnumber", width: "150px" },
               { field: "Netweight", width: "50px" },
               { field: "Packusername", width: "150px" },
               { field: "Packdate", width: "100px" }
           ],
           editable: false,
           dataSource: {
               schema: {
                   data: "d",
                   model: {
                       id: "Packserialnumber",
                       fields: {
                           Packserialnumber: { editable: false, nullable: true },
                           Netweight: { type: "number", validation: { required: true, min: 1} },
                           Packusername: { validation: { required: true} },
                           Packdate: { validation: { required: true} }
                       }
                   }
               },
               batch: false,
               transport: {
                   read: {
                       url: "Default.aspx/Pcpacking",
                       contentType: "application/json; charset=utf-8",
                       dataType: "json"
                   }
               }
           }
       });
   });
于 2013-12-19T07:13:40.930 に答える