سؤال

هذا السؤال مرآة من هذا المشنور في منتدى Telerik الذي قمت بنشره بالأمس.

لدي TreeView مع HierarchicalDataSource وسؤالي بسيط:هل يمكنني الوصول إلى عنصر البيانات الحالي في وظيفة النقل.قراءة؟

على سبيل المثال، خذ بعين الاعتبار هذا الكود:

new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            // Here i'll prepare my url to be called
            return "my/controller/" + dataItem.Id;
        }
    }
});

أريد الوصول إلى خصائص dataItem للعقدة الموسعة الحالية داخل وظيفة القراءة.هل هذا ممكن؟

لقد جربت العديد من الطرق ولكن النطاق الموجود داخل هذه الوظيفة يمنحني إمكانية الوصول إلى أي شيء خارجها.

تحديث:

تم عمل اقتراح @OnaBai - في حالتي - Value الملكية، في ضوء النموذج التالي:

{
    id: "Value",
    hasChildren: "HasChildren"
}; 

لكنني أريد أن أكون قادرًا على الوصول إلى المزيد من ذلك فقط Id ولكن كله dataItem.لقد حاولت إضافة خصائص dataItem - أو الطلب - إلى النموذج ولكنها لم تنجح:

{
    id: "Value",
    hasChildren: "HasChildren",
    fields: {
        ParentId: { type: "string" }
    }
}; 

ParentId يأتي من الطلب ويمكن الوصول إليه في dataItem, ، ولكن ليس في options داخل read وظيفة.هناك طريقة أخرى للقيام بذلك؟

تحديث 2:

يمكن تحقيق طريقة صعبة للقيام بذلك عن طريق تعيين معرف النموذج على uid:

{
    id: "uid"
}

ستتلقى الوظيفة uid ومن ثم يمكنك الحصول عليه من dataSource، على سبيل المثال. dataSource.getByUid().

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

المحلول

افترض أن Id ال id المحددة في النموذج الخاص بك، يجب عليك القيام بما يلي:

new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            return "my/controller/" + options.Id;
        }
    }
});

انظر مثالا هنا: http://jsfiddle.net/OnaBai/mE4zZ/2/

يحرر:إذا كنت بحاجة إلى الوصول إلى النموذج الكامل، فاعرف id يمكنك استخدام get طريقة على DataSource للحصول على العنصر.

مثال:

var ds = new kendo.data.HierarchicalDataSource({
    transport: {
        read: function(options) {
            if (options.Id) {
                var item = ds.get(options.Id);
                // Do whatever else you need with Item
            }
            return "my/controller/" + options.Id;
        }
    }
});

تعديل JSFiddle هنا http://jsfiddle.net/OnaBai/mE4zZ/3/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top