سؤال

في تطبيق Flex الخاص بي، قمت بتخزين عرض وأعمدة الأعمدة في ملف XML. عندما يقوم التطبيق بتحميله يقرأ من ملف XML ويضع قيم أعمدة كما قابلة للتطبيق:

for(i = 0; i < columnsOrder.length; i++){
    newOrder[i] = myDG.columns[Number(columnsOrder[i]) - 1];
    newOrder[i].visible = (Number(columnsVisiblity[i]) == 1);
    newOrder[i].width = Number(columnsWidth[i]);
}
myDG.columns = newOrder;
myDG.invalidateList();

يبدو أن المشكلة تحدد الرؤية (يقوم بتعيين الحقل المرئي بشكل صحيح ولكن تعويث العرض) ... لقد حاولت إعداده بعد تعيين العرض (خارج الحلقة) وقبل الحلقة أيضا. يتم تغيير حجم الأعمدة بشكل صحيح إذا لم أفعل أي شيء به الرؤية.

أيه أفكار؟

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

المحلول

أضف عبارة استيراد في الجزء العلوي من ملف الفصل:

استيراد mx.core.mx_internal؛

ثم قم بإزالة استخدام مساحة الاسم MX_Internal، وإزالة مالك العمود، وقم بتغيير العرض ثم reacign الأصل:

public static function resizeColumn(col:DataGridColumn, size:int):void
    {
        var owner:* = col.mx_internal::owner
        col.mx_internal::owner = null;

        col.width = size;

        col.mx_internal::owner = owner;
    }

هذا يجب أن تفعل الخدعة (حسنا، فعلت لنا بعد يومين من اليمين)

نصائح أخرى

هل أنت horizontalscrollepolicy مجموعة كاذبة على DataGrid؟

"إذا كانت خاصية HorizontalScrollePolicy في DataGrid's FALSE، يجب أن يصلح جميع الأعمدة المرئية إلى المنطقة المعروضة، فلن يحترم DataGrid دائما عرض الأعمدة إذا كان العرض الإجمالي للأعمدة صغيرا جدا أو كبير جدا بالنسبة للمنطقة المعروضة".

http://livedocs.adobe.com/flex/3/langref/mx/controls/datagridclasses/datagridcolumn.html#width.

كنت قادرا على الحصول عليها للعمل عن طريق استدعاء الحلقة المذكورة أعلاه في وظيفة مرتين ... أول مرة يضيف فيها الأعمدة المرئية، والمرة الثانية تقوم بتعيين العرض الصحيح. ليس أفضل حل لكنني لا أستطيع أن أنفق المزيد من الوقت على ذلك.

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