Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gwt-单元格表-添加额外行_Gwt_Gwt 2.2 Celltable - Fatal编程技术网

gwt-单元格表-添加额外行

gwt-单元格表-添加额外行,gwt,gwt-2.2-celltable,Gwt,Gwt 2.2 Celltable,在此输入代码我有一个celltable,列中包含一些数字。我想在表的末尾添加一个额外的行,它将保存每列的总数。有没有办法做到这一点 以下是我的代码: import java.util.*; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.TextColu

在此输入代码我有一个celltable,列中包含一些数字。我想在表的末尾添加一个额外的行,它将保存每列的总数。有没有办法做到这一点

以下是我的代码:

   import java.util.*;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.view.client.ListDataProvider;

public class TestProject implements EntryPoint 
{

 private static int totalSalary=0;
 private static class Contact 
 {
        private final String salary;
        private final String name;

        public Contact(String name, String salary) 
        {
          this.name = name;
          this.salary = salary;
        }
 }

private static List<Contact> CONTACTS = Arrays.asList(new Contact("John","100000"), 
                                                      new Contact("Mary", "200000"), 
                                                      new Contact("Zander", "300000"));
/**
 * This is the entry point method.
 */
public void onModuleLoad() 
{
    final CellTable<Contact> table = new CellTable<Contact>();

    // Create name column.
    TextColumn<Contact> nameColumn = new TextColumn<Contact>() 
    {
      @Override
      public String getValue(Contact contact) 
      {
        return contact.name;
      }
    };

    // Create address column.
    TextColumn<Contact> addressColumn = new TextColumn<Contact>() 
    {
      @Override
      public String getValue(Contact contact) 
      {
        totalSalary+=Integer.parseInt(contact.salary);
        return contact.salary;
      }
    };

    // Add the columns.
    table.addColumn(nameColumn, "Name");
    table.addColumn(addressColumn, "Salary");

    // Create a data provider.
    ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();

    // Connect the table to the data provider.
    dataProvider.addDataDisplay(table);

    // Add the data to the data provider, which automatically pushes it to the
    // widget.
    final List<Contact> list = dataProvider.getList();
    for (Contact contact : CONTACTS) {
      list.add(contact);
    }

    // We know that the data is sorted alphabetically by default.
    table.getColumnSortList().push(nameColumn);

    Contact total = new Contact("Total: ",totalSalary+"");
    list.add(total);



    // Add it to the root panel.
    RootPanel.get().add(table);
    //RootPanel.get().add(add);
}
import java.util.*;
导入com.google.gwt.core.client.EntryPoint;
导入com.google.gwt.user.cellview.client.CellTable;
导入com.google.gwt.user.cellview.client.TextColumn;
导入com.google.gwt.user.client.ui.RootPanel;
导入com.google.gwt.view.client.ListDataProvider;
公共类TestProject实现入口点
{
私有静态int totalSalary=0;
私有静态类联系人
{
私人薪酬;
私有最终字符串名;
公共联系人(字符串名称、字符串工资)
{
this.name=名称;
这个。薪水=薪水;
}
}
私有静态列表联系人=Arrays.asList(新联系人(“John”,“100000”),
新联系人(“玛丽”,“200000”),
新联系人(“Zander”、“300000”);
/**
*这是入口点方法。
*/
moduleload()上的公共void
{
最终单元表=新单元表();
//创建名称列。
TextColumn name column=新建TextColumn()
{
@凌驾
公共字符串getValue(联系人)
{
返回contact.name;
}
};
//创建地址列。
TextColumn addressColumn=新的TextColumn()
{
@凌驾
公共字符串getValue(联系人)
{
totalSalary+=Integer.parseInt(contact.salary);
返回联系人。工资;
}
};
//添加列。
表.addColumn(名称栏,“名称”);
表2.addColumn(addressColumn,“工资”);
//创建一个数据提供者。
ListDataProvider dataProvider=新ListDataProvider();
//将表连接到数据提供程序。
dataProvider.addDataDisplay(表);
//将数据添加到数据提供程序,它会自动将数据推送到
//小部件。
final List=dataProvider.getList();
用于(联系人:联系人){
列表。添加(联系人);
}
//我们知道数据默认按字母顺序排序。
table.getColumnSortList().push(nameColumn);
联系人总数=新联系人(“总数:”,totalSalary+”);
增加(总数);
//将其添加到根面板。
RootPanel.get().add(表);
//RootPanel.get().add(add);
}

}

当你指的是总计时,我不太清楚你的意思,但这与你的代码类似,但我添加了一个按钮,可以添加行,你可以去掉它,只添加行

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class TestGwt implements EntryPoint {

     private static class Contact {
            private final String address;
            private final String name;

            public Contact(String name, String address) {
              this.name = name;
              this.address = address;
            }
          }

    private static List<Contact> CONTACTS = Arrays.asList(new Contact("John",
    "123 Fourth Road"), new Contact("Mary", "222 Lancer Lane"), new Contact(
    "Zander", "94 Road Street"));
    /**
     * This is the entry point method.
     */
    public void onModuleLoad() {
         // Create a CellTable.
        final CellTable<Contact> table = new CellTable<Contact>();

        // Create name column.
        TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.name;
          }
        };

        // Make the name column sortable.
        nameColumn.setSortable(true);

        // Create address column.
        TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.address;
          }
        };

        // Add the columns.
        table.addColumn(nameColumn, "Name");
        table.addColumn(addressColumn, "Address");

        // Create a data provider.
        ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();

        // Connect the table to the data provider.
        dataProvider.addDataDisplay(table);

        // Add the data to the data provider, which automatically pushes it to the
        // widget.
        final List<Contact> list = dataProvider.getList();
        for (Contact contact : CONTACTS) {
          list.add(contact);
        }

        // We know that the data is sorted alphabetically by default.
        table.getColumnSortList().push(nameColumn);

        Button add = new Button("Add Row");
        add.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                list.add(new Contact(Integer.toString(table.getRowCount()),Integer.toString(table.getRowCount())));
            }
        });


        // Add it to the root panel.
        RootPanel.get().add(table);
        RootPanel.get().add(add);

      }



}

希望这将有助于我不确定你所说的总计是什么意思,尽管任何东西都可以以联系人的形式添加到最后一个字段,即使它不是必需的,更好的方法是为数据提供程序使用泛型,但这将以最少的代码实现相同的效果。此外,我建议您在添加列时使用footer参数: addColumn(列列列,标题标题)

public void addNewRow(){
List newContactLst=Arrays.asList(新联系人(“测试”),
"样本");;
int numRows=table.getRowCount();
表.setRowCount(numRows+1);
表.setRowData(numRows,newContactLst);
}

您的手机表是否连接到数据提供商?@Chris,我发布了我的代码。提前谢谢。你说的总数是什么意思answer@Chris,我更新了我的代码。该表现在包含员工姓名和工资。最后一行应显示所有工资总额。我已经编写了一个静态变量“totalSalary”,但它将变为0。如果我为salary添加一个getter,并执行for循环将所有的salary添加到totalSalary中,它就会起作用。为什么我不能在创建薪资栏时添加薪资?如果您解释代码,这将是一个更有力的答案。不要只给OP一条鱼,教他(和其他有同样问题的人)钓鱼。
public void addNewRow(){                

    List<Contact> newContactLst = Arrays.asList(new Contact("TEST",
              "Sample"));

    int numRows = table.getRowCount();

    table.setRowCount(numRows+1);

    table.setRowData(numRows,newContactLst);

}