[Grid] ????

2011-12-28 09:25:04by ??

grid的多级联动

我们先来看一下程序运行的界面:

当我们选中头表记录中的“科目类型”的时候,行表自动刷新数据

我们先来看这是怎么做到的。

                
  <a:dataSets>
      <a:dataSet id="sys_code_query_ds"/>
      <a:dataSet id="sys_code_result_ds" autoCount="true" autoQuery="true" fetchAll="false" model="sys.sys_codes" 
      pageSize="6" queryDataSet="sys_code_query_ds"
      queryUrl="${/request/@context_path}/autocrud/sys.sys_codes/query? ORDER_FIELD=code" 
      selectable="true"   submitUrl="sys_code_update.svc">
          <a:fields>
              <a:field name="sys_flag" defaultValue="N"/>
              <a:field name="enabled_flag" checkedValue="Y" defaultValue="Y" uncheckedValue="N"/>
          </a:fields>
          <a:events>
              <a:event name="indexchange" handler="indexChangeFunction"/>
          </a:events>
      </a:dataSet>
      <a:dataSet id="sys_code_ref_ds" bindName="result_ds" bindTarget="sys_code_result_ds" fetchAll="true" 
      model="sys.sys_code_values" 
      queryUrl="${/request/@context_path}/autocrud/sys.sys_code_values/query?ORDER_FIELD=code_value" 
      selectable="true">
          <a:fields>
              <a:field name="enabled_flag" checkedValue="Y" defaultValue="Y" uncheckedValue="N"/>
          </a:fields>
      </a:dataSet>
  </a:dataSets>
  <a:grid id="sysGrid" bindTarget="sys_code_result_ds" height="178" marginWidth="70" navBar="true" width="800">
      <a:toolBar>
          <a:button id="btn_rst_add" type="add"/>
          <a:button id="btn_rst_del" click="deleteCheck" icon="../../images/remove.png" text="删除"/>
          <a:button id="btn_rst_save" type="save"/>
      </a:toolBar>
      <a:columns>
          <a:column name="code" sortable="true" width="300"/>
          <a:column name="code_name"/>
          <a:column name="sys_flag" width="70"/>
          <a:column name="enabled_flag" width="70"/>
      </a:columns>
  </a:grid>
  <a:grid id="refSysGrid" autoFocus="false" bindTarget="sys_code_ref_ds" height="230" marginHeight="430" 
  marginWidth="70" width="800">
      <a:toolBar>
          <a:button id="btn_ref_add" type="add"/>
          <a:button id="btn_ref_del" type="delete"/>
      </a:toolBar>
      <a:columns>
          <a:column name="code_value" sortable="true" width="300"/>
          <a:column name="code_value_name" width="300"/>
          <a:column name="enabled_flag" sortable="true" width="70"/>
      </a:columns>
  </a:grid>
      


在代码中看到,我们声明了两个dataset,一个是负责和头表数据交互的dataset:sys_code_result_ds,另一个是负责和行表数据交互的
dataset: sys_code_ref_ds。同时在行表dataset上声明了一个重要属性:bandTarget=”sys_code_ref_ds”。
      

Grid多级联动的查询


在头dataset上,我们声明了数据来源:queryUrl="${/request/@context_path}/autocrud/sys.sys_codes/query?ORDER_FIELD=code",
表明数据从sys_codes这个bm中获得,行dataset上,我们声明了queryUrl="${/request/@context_path}/autocrud/sys.sys_code_values
/query?ORDER_FIELD=code_value",表明了数据从sys_code_values这个bm中获得。当行dataset上声明了bandTarget=”sys_code_ref_
ds”后,当头dataset中被选中的record的index发生改变时(在此应用中可以使简单的单击其他行),会自动将头的当前record中的所有数据
当做行dataset的查询数据,进行一次行表的查询。这样,只要行表bm中有对应头记录的ID的条件子句时,就可以正确拼出查询sql。
      

Demo
    Attachments

      Comments

      1 Responses to the article
      1. [email protected] 留言于:2017年06月05日 15:31
        好东西。
      发表评论