これは簡単な作業のように見えますが、ドキュメントの検索のどこかで-接続を逃しました。
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をリストに入れていることがわかります。また、他のフィールドをフィルタリングするために何もしていないため、他のフィールドがクエリに存在する必要があることも知っています。実際のところ、コードを次のように変更すると、次のようになります。
食事.Add(myMeal.getMealID()、myMeal.getMealType()、myMeal.getMealDate());
すべてのデータを返しますが、フレックステーブルは各アイテムを1つの行の3つのフィールドではなく、新しい行として扱います。
したがって、私の質問は、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);
}
}
フレックステーブルは次のように入力されます。
食事ID| 食事タイプ| 食事
日1| 1 | 1
2 | 2 | 2
3 | 3 | 3
私はそれをこのように移入させたい:
食事ID| 食事タイプ| 食事
日1| 朝食| 2012年12月22
日2| ランチ| 2012年12月22
日3| スナック| 2012年12月23日
ご入力いただきありがとうございます!