ZK показывает огромные данные в окне списка в Internet Explorer, вызывает ошибку javaScript - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь показать около 300 заголовков и 1000 строк со списком zk, но в Internet Explorer выдает «Остановить запуск этого сценария?» ошибка. Если я нажимаю «нет», он продолжает и открывает мой список. В Firefox и Internet Explorer 9 он работает нормально, но я должен использовать проводник 8. Вот мое не рабочее решение

<listbox id="listModel" rows="15" 
                                        mold="paging" pageSize="15">
                                        <listhead >
                                            <listheader id="${each}"  
                                                style="overflow:auto" label="${each}" width=" 250px"
                                                forward="onDoubleClick=onRemoveFromHeader"
                                                forEach="${comboModelColumns}"  />
                                            <custom-attributes
                                                headers="${each}" />
                                        </listhead>
                                        <listitem
                                            forEach="${listValues}">
                                            <listcell
                                                forEach="${listValues[forEachStatus.index]}"
                                                label="${each}" />
                                        </listitem>
                                    </listbox> 

здесь combomodelColumns список из 300 строк. и listValues является списком, который содержит 1000 списков. И каждый список содержит около 300 строк.

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Internet Explorer, к сожалению, не работает с той же скоростью, что и Firefox и другие браузеры. Если выполнение потока занимает более нескольких секунд, IE предлагает это диалоговое окно пользователю.

Я бы порекомендовал вам разбить список:

<listbox mold="paging" pageSize="5"/>

Кроме того, ZK позволяет вам использовать события подкачки, позволяя вам решить, когда заполнять дополнительные данные в вашем списке и т. Д.

Взгляните на:

http://books.zkoss.org/wiki/ZK_Component_Reference/Supplementary/Paging

0 голосов
/ 08 июня 2011

Я решил проблему.

это мой компонент zk

<listbox id="listModel" rows="15" 
                                    mold="paging" pageSize="15">


                                    <listhead >
                                        <listheader 
                                            style="overflow:auto" label="${each}" width=" 250px"
                                            forward="onDoubleClick=onRemoveFromHeader"
                                            forEach="${tmpHeaders}"  />
                                        <custom-attributes
                                            headers="${each}" />
                                    </listhead>
                                    <listitem
                                        forEach="${tmpListValue}">
                                        <listcell
                                            forEach="${tmpListValue[forEachStatus.index]}"
                                            label="${each}" />
                                    </listitem>
                                </listbox>

Я создал только 18 заголовков, но я взял данные о дырах в другом списке. когда я выбираю какой-либо заголовок из своего списка, он добавляется вручную в заголовки списка и данные строки.

Listheader newheader = new Listheader();
    newheader.setLabel(listBox_Columns.getSelectedItem().getLabel());
    newheader.setWidth("250px");

    org.zkoss.zk.ui.sys.ComponentsCtrl.applyForward(newheader, "onRemoveFromHeader");

    listModel.getListhead().appendChild(newheader);

    for (int i = 0; i < listValues.size(); i++) {

        List tmpCurrentRow = (List) listValues.get(i);
        List tmpRows = new ArrayList();

        Listcell newCell = new Listcell(tmpCurrentRow.get(findIndexHeaderByName(listBox_Columns.getSelectedItem().getLabel(), allHeaders)).toString());

        ((Listitem) listModel.getItems().get(i)).appendChild(newCell);

    }

вот и все. Также я добавил функцию удаления заголовка, чтобы удалить добавленный заголовок и ячейки. Он просто устанавливает видимость false.

public void onRemoveFromHeader(ForwardEvent event) {


        Listheader listheader = (Listheader) event.getOrigin().getTarget();
        listheader.setVisible(false);

        listBox_Columns.setSelectedItem(null);

    }
...