2013-03-24 31 views
0

我想将行添加到智能gwt中的ListGrid中。正在添加的行,但没有显示智能gwt中的ListGrid显示空白行

public class SearchResultsView extends HLayout { 
public SearchResultsView(EmployeeServiceAsync empServiceAsync) { 
    final ListGrid employeeGrid = new ListGrid(); 
    employeeGrid.setWidth(500); 
    employeeGrid.setHeight(224); 
    employeeGrid.setShowAllRecords(true); 

    ListGridField empIDField = new ListGridField("empID", "Employee Id"); 
    ListGridField empNameField = new ListGridField("empName", 
      "Employee Name"); 

    employeeGrid.setFields(empIDField, empNameField); 
           // Employee[EmployeeData.getRecords().size()]); 

    empServiceAsync.getRecords(new AsyncCallback<List<Employee>>() { 

     @Override 
     public void onSuccess(List<Employee> result) { 
      System.out.println(result); 
      /* 
      Employee[] employee = result.toArray(new Employee[result.size()]); 

      employeeGrid.setData(employee);*/ 
      EmployeeListGrid employeeListGrid[]=new EmployeeListGrid[result.size()]; 
      int counter=0; 
      for (Employee employee : result) { 
       employeeListGrid[counter]=new EmployeeListGrid(employee.getEmpID(), employee.getEmpName()); 
       System.out.println(employeeListGrid[counter].getEmpID()+">>"+employeeListGrid[counter].getEmpName()); 
       counter++; 
      } 
      employeeGrid.setData(employeeListGrid); 

     } 

     @Override 
     public void onFailure(Throwable caught) { 
      // TODO Auto-generated method stub 

     } 
    }); 

    this.addChild(employeeGrid); 

} 

}

释>> 值来填充我想提出一个RPC调用服务器网格,服务器返回一个列表。 我迭代列表并创建一个EmployeeListGrid类型的对象数组(如EmployeeListGrid extends ListGridRecord)。然后提供数组创建的employeegrid wuth。

我在这里错过了什么,为什么网格显示空行?

请注意我已调试并确保“employeeListGrid”正确填充,但内容不呈现。

+0

我试图附上结果的屏幕截图,但我没有能力,因为我只有一个声望。 – MeanMan 2013-03-24 15:44:25

+0

显示“EmployeeListGrid.java”类。 – RAS 2013-03-25 09:05:48

回答

0

观光了望: 字段名是区分大小写,因此检查的数据和字段名之间不匹配的情况下,如“parentId的” VS“的parentID” http://forums.smartclient.com/showthread.php?t=8159#aGrid

class SearchResultsView extends HLayout { 
    public SearchResultsView() { 
     final ListGrid employeeGrid = new ListGrid(); 
     employeeGrid.setWidth(500); 
     employeeGrid.setHeight(224); 
     employeeGrid.setShowAllRecords(true); 

     ListGridField empIDField = new ListGridField("empID", "Employee Id"); 
     ListGridField empNameField = new ListGridField("empName", "Employee Name"); 

     employeeGrid.setFields(empIDField, empNameField); 

     // using a timer to simulate async callback, grid will populate after 2.5 seconds 
     // place code inside run() method in onSuccess() 
     Timer timer = new Timer() { 
      @Override 
      public void run() { 
       RecordList recordList = employeeGrid.getRecordList(); 

       List<Employee> employeeList = getEmployeeList(); 
       for (Employee employee : employeeList) { 
        recordList.add(new EmployeeRecord(employee.empID, employee.empName)); 
       } 
      } 
     }; 

     timer.schedule(2500); 

     this.addChild(employeeGrid); 
    } 

    private List<Employee> getEmployeeList() { 
     List<Employee> employeeList = new ArrayList<Employee>(); 
     employeeList.add(new Employee("1", "AAA")); 
     employeeList.add(new Employee("2", "BBB")); 
     employeeList.add(new Employee("3", "CCC")); 
     employeeList.add(new Employee("4", "DDD")); 

     return employeeList; 
    } 
} 

class Employee { 
    String empID; 
    String empName; 

    Employee(String empID, String empName) { 
     this.empID = empID; 
     this.empName = empName; 
    } 
} 

class EmployeeRecord extends ListGridRecord { 

    EmployeeRecord(String empID, String empName) { 
     setAttribute("empID", empID); 
     setAttribute("empName", empName); 
    } 
} 

它可以使用ListGrid.setData()如下所示。

List<Employee> employeeList = getEmployeeList(); 

if (employeeList != null && employeeList.size() > 0) { 
    EmployeeRecord[] employeeRecords = new EmployeeRecord[employeeList.size()]; 
    for (int i = 0; i < employeeList.size(); i++) { 
     employeeRecords[i] = new EmployeeRecord(employeeList.get(i).empID, employeeList.get(i).empName); 
    } 

    employeeGrid.setData(employeeRecords); 
} 

EmployeeRecord(EmployeeListGrid)类可能不需要,除非有足够的理由这样做。 我用它来减少你的代码和我的代码之间的差异。

必须使用正确的访问修饰符,即使我没有尽量减少代码。

+0

谢谢你这么冷杉响应..我做了一个非常愚蠢的错误,我错过了“setAttribute(”empID“,empID);”部分在构造函数中。 – MeanMan 2013-03-29 09:23:20

+0

不客气,我们都犯了愚蠢的错误 – Sithsu 2013-03-29 14:47:08

+0

@Livejava你可以接受答案,如果它解决了你的问题。 – Sithsu 2013-04-26 09:45:05