首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT生成动态CellTable

GWT生成动态CellTable
EN

Stack Overflow用户
提问于 2011-07-20 17:12:19
回答 1查看 1.5K关注 0票数 0

我想从xml生成动态单元格表

我的可扩展标记语言包含N个列(具有列名、列类型、可排序、isEditable (Y/N)、单元格的值等详细信息,

问题是如何在GWT中从一个变体(动态)可扩展标记语言生成单元格表,即在创建单元格表时,我们不知道有多少列,我们不知道类型,isEditable,isSortable等。

我可以解析xml。现在我想生成动态表,我创建了BeanInfo类,这个类用于getters和setters。如何为这些动态列( bean的属性)创建动态getter和setter,以及如何在bean中设置值?

伪代码:

代码语言:javascript
复制
// dynamic column. 
    final Column<BeanInfo, String> dynamicGwtColumn = new Column<BeanInfo, String>(
            new DynamicDataTypeCell()) {
        @Override
        public String getValue(BeanInfo object) {
            return object.getDyncamicCellValue();
        }
    };
    dynamicGwtColumn .setSortable(true);
    sortHandler.setComparator(dynamicGwtColumn ,
            new Comparator<BeanInfo >() {
                public int compare(BeanInfo o1, BeanInfo o2) {
                    return o1..getDyncamicCellValue().compareTo(o2.getDyncamicCellValue());
                }
            });
    cellTable.addColumn(dynamicGwtColumn , "Record ID");


    dynamicGwtColumn 
            .setFieldUpdater(new FieldUpdater<BeanInfo, String>() {
                public void update(int index, BeanInfo object,
                        String value) {
                    // Called when the user changes the value.

                    object.setDyncamicCellValue(value);

                    dataProvider.refresh();
                }
            });

我的xml如下:

< ?xml version="1.0“encoding="UTF-8"?>

< Data neutralizedCatalog=“存储库”>

代码语言:javascript
复制
< MetaData>

  < RecordAttribute name="ID" displayname="ID" columnname="CID" datatype="VARCHAR2" sortable="true" accessmode="modify" showmvpd="false" length="255" integerlength="0" fractionallength="0" />
  < RecordAttribute name="Name" displayname="Name" columnname="CNAME" datatype="VARCHAR2" sortable="true" accessmode="modify" showmvpd="false" length="255" integerlength="0" fractionallength="0" />
  < RecordAttribute name="custom1" displayname="custom1" columnname="CCUSTOM1" datatype="VARCHAR2" sortable="true" accessmode="modify" showmvpd="false" length="256" integerlength="0" fractionallength="0" />
</MetaData>
     <Records>
     < RecordAttribute name="CID" edited="false">
        <Value />
      </RecordAttribute>
      < RecordAttribute name="CNAME" edited="false">
        <Value />
      </RecordAttribute>
      < RecordAttribute name="CCUSTOM1" edited="false">
        <Value />
      </RecordAttribute>
    </Record><Records> 
<Recordid="17" name="17" productkeyid="13012" selected="false" accessmode="modify" isedited="false">
      <RecordAttribute name="CID" edited="false">
        <Value>17</Value>
        <OldValue>17</OldValue>
      </RecordAttribute>
      <RecordAttribute name="CNAME" edited="false">
        <Value>17</Value>
        <OldValue>17</OldValue>
      </RecordAttribute>
      <RecordAttribute name="CCUSTOM1" edited="false">
        <Value>17</Value>
        <OldValue>17</OldValue>
      </RecordAttribute>
    </Record>

从上面的xml,我想生成Celltable。在上述xml示例中,包含列名称、数据类型等和值。

如何生成基于xml的动态setter和setter,并在单元格中用于显示/更新值

EN

回答 1

Stack Overflow用户

发布于 2011-07-20 23:04:22

解析XML。获取数据到列信息对象的ArrayList中(例如)。

代码语言:javascript
复制
columns.get(0).type - type of column 1

columns.get(0).name - name of column 1

对于每个列,根据类型和参数,将列添加到cellTable

代码语言:javascript
复制
CellTable<BeanInfo> cellTable = new CellTable<BeanInfo >();

for(AxCol col : columns)) {

    Column<BeanInfo, java.lang.Object> cellTableColumn = null;
    AbstractCell cellTableCell = null;

    if(col.type == "string"){

        cellTableCell = new TextCell();

        cellTableColumn = new Column<BeanInfo, java.lang.Object>(cellTableCell) {
          @Override
          public String getValue(BeanInfo object) {
            return (BeanInfo) object.getValue();
          }
        };                              

    }

    if(col.type == "image"){

        cellTableCell = new ImageCell();

        cellTableColumn = new Column<BeanInfo, java.lang.Object>(cellTableCell) {
          @Override
          public String getValue(BeanInfo object) {
            return (BeanInfo) object.getValueForImage();
          }
        };                              

    }   

    cellTable.addColumn(cellTableColumn);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6759517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档