سؤال

أنا أسحب بيانات XML لتحديد الأعمدة المرئية، وعرض كل عمود. يمكن أن يتغير عرض DataGrid الخاص بي مستنقعات على جانب واحد من صندوق HDIVide. يعمل جزء الرؤية، ولكن إعداد العرض يسبب الصداع. هيريس الرمز:

for(loop through column data retrieve from XML)
{ 
    newData[i] = dg.columns[Number(columnsOrder[i]) - 1];
    newData[i].visible = (Number(columnsVisibility[i]) == 1);
    newData[i].width = Number(columnsWidth[i]);
    trace(newData[i].headerText + " w:" + newData[i].width.toString() + " v:" + newData[i].visible.toString());
}
dg.columns = newData;
dg.invalidateList();

في التتبع، يكون العرض صحيحا لأول عنصرين، ومع ذلك، يتم عرضه باسم "20" على التوالي ...

Date w:240 v:true
Title w:184 v:true
Requestor w:20 v:true
Approved By w:20 v:true
Category w:20 v:false
Status w:20 v:false
Priority w:20 v:false

عندما أخرج الرقم (Collectswidth [i])، فإنه يظهر كقيمة صحيحة، بحيث يحدث شيء غريب في تعيين العرض.

كان ينظر إلى هذا لبضع ساعات الآن، وقد جربت أشياء متعددة لمحاولة إصلاحه دون جدوى.

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

المحلول

يمكن أن يتغير عرض DataGrid الخاص بي مستنقعات على جانب واحد من صندوق HDIVide.

هذه هي المشكلة هناك.

واجهت نفس المشكلة بالضبط مع عرض Flex 2 و Flex 3 DataGridColumn عرض كلما لم يتم إصلاح عرض DataGrid. الحل الوحيد الذي كان لدي هو إصلاح عرض DataGrid أو التبديل إلى AdvancedDatagrid أو غيرها من مكونات مماثلة.

نصائح أخرى

لقد فعلت نفس الشيء في AdvancedDatagrid ويعمل. حاول عن طريق تحديد هذه القيم

  horizontalScrollPolicy="on"
  width="100%

ثم أضف لك الأعمدة التي يجب أن تعمل بها مع HDividedbox.

يمكنك تحقيق ذلك، هذا ما أعتقد أنه خطأ في DataGrid نفسه.

إذا قمت بتعيين minwidth = "0" و horizontalscrollepolypolicy = "{scrollpolicy.auto}" في DataGrid، يمكنك بعد ذلك إنشاء كائنات DataGridColumn مع عرض ثابت وأطيعه بشكل صحيح.

ومع ذلك، يبدو أن هناك مشكلة في العمود النهائي، عندما لا يزال DataGrid أكبر، فإن مجموع كل العروض الثابتة، وسوف تمدد DataGridColumn النهائي.

يمكنك التغلب على هذا عن طريق إضافة عمود فارغ في النهاية بدون نص رأس إلخ.

حسنا - لقد نفد هذا أنفسنا أثناء بناء دعم أوضاع عرض العمود المختلفة. مجرد القليل من المعلومات من المعلومات - إذا كنت ترغب في تعيين العرض بشكل صريح، فتأكد من فعل شيء مثل هذا:

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top