2012-04-08 47 views
0

這似乎是一個簡單的任務,但在搜索文檔的某處 - 我錯過了連接。使用JDO GAE數據存儲結果到FlexTable

我保存在GAE的菜單,並且可以返回查詢的結果:

public String[] getMeals() throws NotLoggedInException { 
    checkLoggedIn(); 
    PersistenceManager pm = getPersistenceManager(); 
    List<String> meals = new ArrayList<String>(); 

    try { 
     Query q = pm.newQuery(Meal.class, "user == u"); 
     q.declareParameters("com.google.appengine.api.users.User u"); 
     q.setOrdering("createDate"); 
     List<Meal> myMeals = (List<Meal>) q.execute(getUser()); 

     for (Meal myMeal : myMeals) { 
      meals.add(myMeal.getMealID()); 
     } 
    } finally { 
     pm.close(); 
    } 
    return (String[]) meals.toArray(new String[0]); 
} 

有了這些成績,我想將其綁定到一個FlexTable。使用stockwatcher示例,我設法將我的ID綁定到FlexTable,但我錯過了如何將結果集中的其他字段綁定到它的概念。 (我在GAE中的字段是mealID,mealType和mealDate)

從上面我們可以看到,我將mealID折騰到List中。 我也知道我的其他字段必須存在於查詢中,因爲我沒有做任何事情來過濾它們。事實上,如果我將我的代碼更改爲:

meals.Add(myMeal.getMealID(),myMeal.getMealType(),myMeal.getMealDate());

它將返回所有數據,但flex表將每個項目視爲新行而不是一行上的三個字段。

所以我的問題是:我應該如何捕獲我的記錄並將它們發送到我的FlexTable,以便我可以將FlexTable綁定到結果集?

僅供參考,客戶端代碼:

private void loadMeals() { 
    // load meals from server service MealService 
    mealService.getMeals(new AsyncCallback<String[]>() { 
     public void onFailure(Throwable error) { 
      handleError(error); 
     } 
     public void onSuccess(String[] meals) { 
      displayMeals(meals); 
     } 
    }); 

} 

private void displayMeals(String[] meals) { 
    for (String meal : meals) { 
     displayMenu(meal, meal, meal); 
    } 
} 

的flextable被填充像這樣:

mealID | mealType | mealDate
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3

它填充像這樣:

mealID | mealType | mealDate
1 |早餐| 12/22/2012
2 |午餐| 12/22/2012
3 |小吃| 12/23/2012

在此先感謝您的意見!

回答