backbase How to keep the order for every column after drag

本文介绍如何通过记录列位置到cookie并在页面刷新时恢复位置,实现b:listgrid和b:datagrid列顺序的状态保存。适用于跨浏览器刷新场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

How to keep the order for every column after drag it (columns position has changed it should keep the last changed position after refreshed it)!

B:listgridb:datagrid内建不支持状态保存,如果要实现跨浏览器刷新的状态保存,与问题9同理,只要手动纪录状态在cookie中,并在construct事件触发的时候根据上次保存的cookie来作相应操作。 <o:p></o:p>

想得知列被拖动的结果,对于b:listgrid,可以响应b: b:listgridheadcelldrag-drop事件;对于b:datagrid,可以响应b:datagridheadcelldrag-drop事件。在列被改变位置之后可以把新的位置记录到cookie里面。在页面刷新的时候,construct事件会被触发,在这时候检测cookie中保存的位置,并把列重新排列。示例代码如下:

xml 代码

  1.   
  2. <b:datagrid id="datagrid1" style="height:300px;" b:template="datagrid.xsl" b:url="datagrid-datasource.xml" b:page-number="1" b:page-size="20" b:page-cache="3" b:items-in-total="1000">  
  3.    <b:datagridhead>  
  4.       <b:datagridrow>  
  5.          <b:datagridheadcell />  
  6.        
  7.          <b:datagridheadcell b:behavior="my-b-datagrid-headcell">Titleb:datagridheadcell>  
  8.          <b:datagridheadcell b:behavior="my-b-datagrid-headcell">Directorb:datagridheadcell>  
  9.          <b:datagridheadcell b:behavior="my-b-datagrid-headcell">Genreb:datagridheadcell>  
  10.          <b:datagridheadcell b:behavior="my-b-datagrid-headcell">Languageb:datagridheadcell>  
  11.          <b:datagridheadcell b:behavior="my-b-datagrid-headcell">Premiereb:datagridheadcell>  
  12.       b:datagridrow>  
  13.    b:datagridhead>  
  14.    <b:datagridbody />  
  15.      
  16.    <s:event b:on="construct">  
  17.     <s:super/>  
  18.       
  19.     <s:with b:target="b:datagridhead/b:datagridrow/b:datagridheadcell">  
  20.         <s:variable b:name="posOld" b:select="position()" b:scope="local" />  
  21.         
  22.         <s:variable b:name="posNew" b:select="number(cookie(concat('datagrid1-',text())))" b:scope="local" />  
  23.         
  24.         <s:task b:action="trigger" b:event="move-column" b:target="id('datagrid1')" b:test="$posNew"/>  
  25.     s:with>  
  26.    s:event>  
  27.       
  28.      
  29.     <s:task b:action="move" b:source="b:datagridhead/b:datagridrow/b:datagridheadcell[$posOld]"    
  30.         b:destination="b:datagridhead/b:datagridrow/b:datagridheadcell[$posNew]" b:mode="after" b:test="$posOld lt $posNew"/>  
  31.       
  32.     <s:task b:action="move" b:source="b:datagridhead/b:datagridrow/b:datagridheadcell[$posOld]"    
  33.         b:destination="b:datagridhead/b:datagridrow/b:datagridheadcell[$posNew]" b:mode="before" b:test="$posOld gt $posNew"/>     
  34.        
  35.       
  36.     <s:script>  
  37. <s:behavior b:name="my-b-datagrid-headcell" b:behavior="b-datagridheadcell">  
  38.     <s:event b:on="drag-drop">  
  39.           
  40.         <s:super/>  
  41.           
  42.         <s:task b:action="setcookie" b:name="{'datagrid1-',text()}" b:value="{position()}" b:days="100" />  
  43.     s:event>  
  44. s:behavior>  
  45.   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值