ZK动态行和列列表框,带有排序异常

时间:2014-06-11 18:57:06

标签: sorting dynamic listbox zk

我正在尝试为动态zk列表框(mysql表)渲染器构建最小可接受的解决方案。我有基本的功能:给定一个表名,zk列表框将正确呈现列和行 - 该部分工作正常。

但是,在排序时我会得到" [Ljava.lang.String;无法转换为java.lang.Comparable"。

请注意,这仅适用于 me ,以了解zk的内部管道并充当简单的演示器。对我而言,最好的"解决方案是最简单和最短的。但是,我不知道自己不知道什么。

这是我的table.zul文件:

<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns="http://www.zkoss.org/2005/zul">
   <div apply="org.zkoss.bind.BindComposer"
                    viewModel="@id('vm') @init('com.anclad.DynamicColumnModel')"
            >
                    <label value="Select Table: " />
                    <combobox id="table_list" model="@load(vm.getTableList())" autodrop="true" />
                    <button id="loadTableButton" label="Load Table" />
                    <label value="Currently Selected Table: " />
                    <label value="@bind(vm.tableName)" />
                    <listbox
                            id="inboxGrid"
                            itemRenderer="com.anclad.DynamicListitemRenderer"
                            height="800px"
                            mold="paging" pageSize="100"
                            hflex="1" vflex="true"
                            model="@load(vm.getTableData())"
                    >
                            <listhead
                                    menupopup="auto"
                            >
                                    <listheader
                                            forEach="${vm.columnList}"
                                            label="${each}"
                                            sort="auto"
                                    ></listheader>
                            </listhead>
                    </listbox>
            </div>
</zk>

这是我的DynamicColumnModel.java:

package com.anclad;

import java.util.ArrayList;
import java.util.*;

import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelExt;
import org.zkoss.zul.event.ListDataListener;

import java.sql.*;

import org.zkoss.bind.annotation.Init;

public class DynamicColumnModel implements ListModelExt, ListModel
{

    private SchemaConnector sc = new SchemaConnector();
    private List<String> columnList = new ArrayList<String>();

    private TableConnector tc = new TableConnector();

    @Init
    public void init()
    {
            columnList = tc.getColumnList();
    }

    public List<String> getColumnList()
    {
            return columnList;
    }

    public void setColumnList(List<String> columnList)
    {
            this.columnList = columnList;
    }

    public String getTableName ()
    {
            return tc.getTableName();
    }

    public List<String> getTableList()
    {
            List<String> list = sc.getList();
            return list;
    }

    public ArrayList<String[]> getTableData()
    {
            return tc.getList();
    }

    public void sort(Comparator cmpr, boolean ascending)
    {
             //do the real sorting...
            //notify the listbox (or grid) that data is changed by use of ListDataEvent...
            System.out.println("entered sort");
            //would actually like to send the sort column name back to let the db do the sort...
    }

    public String getSortDirection (Comparator cmpr)
    {
            System.out.println("entered getSortDirection");
            return null;
    }

    public void removeListDataListener(ListDataListener l)
    {
            System.out.println("entered removeListDataListenter");

    }

    public void addListDataListener(ListDataListener l)
    {
            System.out.println("entered addListDataListener");

    }

    public int getSize()
    {
            System.out.println("entered getSize");
            return 33;
    }

    public String[] getElementAt(int index)
    {
            System.out.println("entered getElementAt");
            return null;
    }
}

我也有一个DynamicListitemRenderer类,除非必要,否则我不想在此发布。但是,我并不认为它与我的排序异常相关。

SchemaConnector和TableConnector类封装了mysql / jdbc逻辑:第一个返回一个表列表,后者返回数据(&#34; select * from ....&#34;)

显然,接口方法是存根,但据我所知,代码没有那么远。

只是想知道那里的人是否可以告诉我下一步是什么。我只希望默认的列表框排序功能正常工作。理想情况下,我想让数据库查询进行排序,所以我需要通过堆栈(不知何故)将列名称传回来,但就目前而言,任何推动我前进的解决方案都很好。

0 个答案:

没有答案