Я работаю в flex, и я сделал собственный снимок, где есть флажки, позволяющие пользователю выбирать несколько опций. Я использовал this template.Сбросить список выпадающих списков с прокруткой
Однако это не имеет прокрутки, потому что, если вы разрешите прокрутку по какой-либо причине, флажки начинают испортиться. Например, если у вас есть варианты с 1 по 8 и показаны только от 1 до 5. Вы выбираете вариант 1, а затем прокручиваете вниз, чтобы выбрать вариант 7. Когда вы прокручиваете вверх, флажки начинают переключаться, как вариант 3 неожиданно показывает выбранный. Продолжайте прокручивать вверх и вниз, и выбор флажка только изменится сам по себе. Я думаю, что это проблема рендеринга, и фактические данные выбора вообще не изменяются (он знает только вариант 1, и был выбран вариант 7). Есть какие нибудь идеи как это починить?
public function onOpen(event:DropDownEvent):void
{//load the checkboxes and set the mouse tracker
activateAllCheckBoxes();
this.scroller.verticalScrollBar.addEventListener(Event.CHANGE, list_verticalScrollBar_change);
callLater(observeMouse);
}
private function list_verticalScrollBar_change(evt:Event):void
{
//currentlySelectedCheckBoxes = selectedCheckboxes;
UpdateCheckBoxesWhenScrolling();
selectedIndex = -1;
}
protected function UpdateCheckBoxesWhenScrolling():void
{
for (var c:int = 0; c < dataGroup.numElements; c++) {
var obj:DropDownCheckBox = dataGroup.getElementAt(c) as DropDownCheckBox;
if(obj!=null)
{
var judgDebtorFromCheckBox:JudgDebtor = (obj.data) as JudgDebtor;
if(FindInCurrentList(judgDebtorFromCheckBox.JudgmentDebtorId)>0)
{
obj.checkbox.selected = true;
}
else
{
obj.checkbox.selected = false;
}
}
}
}
private function FindInCurrentList(ID:int):int
{
for(var i:int=0;i<currentlySelectedCheckBoxes.length;i++)
{
var JD:JudgDebtor = currentlySelectedCheckBoxes.getItemAt(i) as JudgDebtor;
if(JD.JudgmentDebtorId == ID)
return 1;
}
return -1;
}
Таким образом, выше кода Я регистрирую прослушиватель событий прокрутки при выпадающем списке. Он будет обновлять выпадающие записи, которые имеют флажок, и он использует коллекцию массивов, называемую: nowSelectedCheckBoxes. Я отлаживаю функцию UpdateCheckBoxesWhenScrolling, и она работает нормально, другими словами, она будет проверять выбранные, но по какой-то причине она по-прежнему показывает неправильные результаты, например, 11 записей в списке, и выбрана только вторая. Я прокручиваю вниз, и я не может видеть вторую запись, но внезапно последняя запись показывает, что она отключена.
Пожалуйста, посту кода здесь. – ketan