كيفية تحميل كمية كبيرة من البيانات في شبكة كندو

StackOverflow https://stackoverflow.com//questions/10665820

سؤال

طريقة الويب:

   <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/06 1260 سجل أو 1388/11/05 5460 سجل أو ...يحدث الخطأ التالي:

{"Message": "حدث خطأ أثناء إجراء التسلسل أو إلغاء التسلسل باستخدام JSON JavaScriptSerializer.يتجاوز طول السلسلة القيمة المحددة على خاصية MaxJsonLength."،" stacktrace ":" at System.Web.script.serialization.javascriptserializer.Serialize (Object OBJ ، stringBuilder ، SerializationFormat SerializationFormat) r n في system.web.script.serialization.javascriptserializer.serialize (Object obj ، serializationFormatformatformat) r n at system.web.scripcer.resthandler.invokeD.invokeD. (سياق httpcontext ، webservicemethoddata methoddata ، idictionary`2 Rawparams) r n
في system.web.script.services.resthandler.executewebserviceCall (httpcontext سياق ، webservicemethoddata methoddata) "،" استثناء ":" System.InvalidoperationException "}}

أعتقد أن شبكة كندو لا تدعم البيانات الضخمة. هل هناك أي اقتراحات؟
اسف على سوء لغتي الانجليزية.

هل كانت مفيدة؟

المحلول

تكمن المشكلة في الواقع في أنه بشكل افتراضي، يقوم مُسلسِل .NET JSON بطرح استثناء إذا كانت سلسلة JSON الناتجة أكبر من 100 كيلو بايت.من الواضح أن إرسال آلاف السجلات أكبر من الحد الأقصى.أنت تستطيع تغيير هذا الإعداد, ، لكنني لا أوصي به لتطبيقك.

بدلاً من ذلك، قم بتكوين الشبكة لطلب أجزاء صغيرة من البيانات في المرة الواحدة.يبدو أنك تستطيع ذلك قم بتكوين Kendo Grid لتحميل المزيد من البيانات أثناء التمرير.

$("#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
    },

    ...
});

سيتعين على البرنامج النصي من جانب الخادم الخاص بك التعامل مع top (كم عدد السجلات المراد إرسالها) و skip (من أين تبدأ) المعلمات التي يرسلها Kendo.

نصائح أخرى

$(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"
                   }
               }
           }
       });
   });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top