打印

[已解决] form和datagrid的问题??

form和datagrid的问题??

我想在pagetoolbar上增加一个日期和下拉框,点查询按钮,数据能查询出来,但是不能显示到datagrid里,看page页码已经变了,说明数据已经更新到datagrid了。我用的AOM2.2最新版本
 以下是JSP代码:
    <w:page title="MP day data Query">
      <layout:borderLayout fitToBody="true">

         <layout:panel region="center" border="false" header="false"
            style="width: 100%;height: 100%;">
            <w:form transient="true">
               <w:dataGrid id="mpData" toolBarPosition="top">
                  <w:pagingToolbar id="pt" pagesize="96">
                     <w:separator />
                     <w:dateField id="queryDate"
                        value="#{MpQueryDayDataBean.queryDate}">
                        <f:convertDateTime pattern="yyyy-MM-dd" timeZone="GMT+8" />
                     </w:dateField>
                     <w:combo id="mpType">
                        <f:selectItems id="mpTypes" />
                     </w:combo>
                     <w:button id="query" value="query" />

                  </w:pagingToolbar>
               </w:dataGrid>
            </w:form>
         </layout:panel>
      </layout:borderLayout>
   </w:page>

[ 本帖最后由 vivian_084 于 2009-6-24 10:20 编辑 ]

TOP

把你的MB代码也贴一下吧

TOP

我的MB代码

@ManagedBean(name = "MpQueryDayDataBean", scope = ManagedBeanScope.SESSION)
public class MpQueryDayDataBean implements Serializable {

   /**
    *
    */
   private static final long serialVersionUID = 2007179534459429062L;

   @Inject("#{ComputerDAO}")
   private ComputerDAO computerDAO;

   @Bind(id = "mpData")
   private UIDataGrid mpData;

   @Bind(id = "mpData", attribute = "viewProvider")
   private GridViewProvider provider = this.getMpViewProvider();

   @Bind(id = "mpData", attribute = "rowDataProvider")
   private GridRowDataProvider rowProvider = this.getMpRowProvider();
   
   @Bind(id = "mpData", attribute = "dataProvider")
   private GridDataProvider dataProvider ;

   @ManagedProperty
   private Date queryDate;
   
   @Bind
  @SelectItems
  private SelectItem[] mpTypes = new SelectItem[] {
    new SelectItem("guangdong", "广东"),
    new SelectItem("heilongjiang", "黑龙江"),
    new SelectItem("beijing", "北京"),
    new SelectItem("shanghai", "上海") };
   
   @Bind(id = "mpType")
  private UICombo mpTypeCombo;
   

   public MpQueryDayDataBean() {
      System.out.println("111");
      queryDate = new Date();
   }



   @SuppressWarnings("unchecked")
   @Action(id = "query")
   private void QueryData() {

      mpData.setViewProvider(provider);
      mpData.setRowDataProvider(rowProvider);
      List computers = computerDAO.findAll();
      dataProvider = new ListProviderAdapter(computers);
      mpData.setDataProvider(dataProvider);
      mpData.setFirst(0);
      mpData.setRows(5);
      mpData.rebind();

      System.out.println("data size:" + computers.size());
   }

}

TOP

楼主需要重新设置dataGrid每页显示的数据数吗?如果不需要,将 QueryData()方法改成下面的代码
复制内容到剪贴板
JAVA 代码:
  1.   List computers = computerDAO.findAll();
  2.   dataProvider = new ListProviderAdapter(computers);
  3.   mpData.setDataProvider(dataProvider);
  4.   mpData.reload();

TOP

1

这样我以前也试过,不行,这样写连页码都不变,感觉数据都没跟Grid绑定啊

TOP

楼主rebind()下在添加reload()调用即可

TOP

1

也不行啊 ,版主帮忙看看啊 ,把form放到borderLayout 的外面,datagrid的数据是能出来的,但是pagetoolbar上新加的datefield和combo里的值都绑定不了!!!!

TOP