Flex ComboBox، القيمة الافتراضية وموفري البيانات
-
09-06-2019 - |
سؤال
لدي فليكس ComboBox
التي يتم ملؤها بواسطة أ dataprovider
كل شيء على ما يرام...
أرغب الآن في إضافة الخيار الافتراضي "- حدد عنصرًا --" في الفهرس 0، كيف يمكنني القيام بذلك مع الاستمرار في استخدام dataprovider
؟لم أر أي أمثلة على ذلك، ولكن لا أستطيع أن أتخيل أن هذا الأمر صعب ...
المحلول
إذا لم تكن تريد أن يكون العنصر الافتراضي قابلاً للتحديد، فيمكنك استخدام prompt
ممتلكات ComboBox
وتعيين selectedIndex
إلى 1.سيظهر ذلك السلسلة التي قمت بتعيينها propmt
إلى القيمة المحددة حتى يختار المستخدم قيمة أخرى.ومع ذلك، لن يظهر في قائمة الخيارات.
نصائح أخرى
لقد واجهت هذه المشكلة اليوم وأردت مشاركة الحل الخاص بي.
لدي ComboBox يحتوي على ArrayCollection الذي يحتوي على كائنات باعتباره مزود البيانات الخاص به.عند تشغيل التطبيق، فإنه يستخدم RemoteObject للخروج والحصول على ArrayCollection/Objects.في معالج الأحداث الخاص بي لهذا الاستدعاء، قمت فقط بإلحاق كائن آخر ببداية ArrayCollection وتحديده:
var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;
هذا ما يبدو عليه ComboBox كمرجع:
<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />
الطريقة التي تعاملت بها مع هذا في الماضي هي إنشاء مجموعة جديدة لتكون بمثابة مزود البيانات لمربع التحرير والسرد، ثم أستمع إلى التغييرات في المصدر الأصلي (باستخدام mx.BindingUtils.ChangeWatcher
).عندما أحصل على مثل هذا الإشعار، أقوم بإعادة إنشاء موفر البيانات المخصص الخاص بي.
أتمنى أن أعرف طريقة أفضل للتعامل مع هذا الأمر؛سأراقب هذا السؤال فقط في حالة.
يمكن استخدام هذا الكود التالي للقيمة الافتراضية المحددة لـ combobox
var index:String = "foo";
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) {
if(comboBox.dataProvider[objIndex].label == index)
{
comboBox.selectedIndex = objIndex;
break;
}
}
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" />