加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex 在表格(DataGrid)中搜索

发布时间:2020-12-15 01:01:09 所属栏目:百科 来源:网络整理
导读:虽然从数据库中查询的数据返回到前台时一般做了分页,如果表格的列较多时,要看数据也不太容易,只能凭肉眼来找了。我们可以自己去遍历表格来找到自己想要的数据,找到后再将找到的行设置为当前选中的状态。如果表格行数较多时,假设找到了需要的数据,并将

虽然从数据库中查询的数据返回到前台时一般做了分页,如果表格的列较多时,要看数据也不太容易,只能凭肉眼来找了。我们可以自己去遍历表格来找到自己想要的数据,找到后再将找到的行设置为当前选中的状态。如果表格行数较多时,假设找到了需要的数据,并将找到的行设置为选中行,但是由于表格不会自动滚动到找到的那一行,所以有时你还以为没找到呢,不过好在列表类都提供了ScrollToIndex方法,这样就好办了。
对于查找方法,虽然DataGrid也提供了一个方法findString(...),但是这个方法只能精确查找表格中某个单元格的数据,所以想要模糊查找的话还不太方便,所以干脆自己遍历数据查一遍得了,还可以支持模糊查询,下面是示例代码:
//假设s是要查找的字符串,grid是DataGrid组件
var idx:int = -1;
for each(var item:Object in grid.dataProvider){
idx++;
for each(var col:DataGridColumn in grid.columns){
?? if(col.dataField !=null && String(item[col.dataField]).indexOf(s)!=-1){
??? grid.selectedItem = item;
??? grid.scrollToIndex(idx);//将当前行滚动到可视范围内
??? return;
?? }
}
}
条件col.dataField !=null是防止表格中有的列没有设置dataField属性,例如对于以CheckBox显示的列你可能没设置dataField属性
条件String(item[col.dataField]).indexOf(s)!=-1检查当前行、列中是否包含字符串s
找到就把表格的选中行设置为找到的那条,并滚动到可视范围内(如果这条数据不在可见范围之内)
上面的代码是找到第一个符合条件的就退出来了,进一步的功能是搜索多条符合条件的数据,并以列表的方式列出来,然后你单击再去定位到指定的行,类似UltraEdit的搜索功能了。

转:http://hi.baidu.com/half_cup_coffee/blog/item/1b261182528736b66d811986.html

?

Flex 搜索定位DataGrid里的数据?

?

实现的功能:
在输入框中输入你要找的城市(city)名,点击Search City按钮,然后调用了searchCity()进行搜索并自动滚屏到匹配项
<?xml version="1.0" encoding="utf-8"?>
<!--搜索定位,编辑单元格功能-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="http_test.send();">
<mx:HTTPService id="http_test"
? url="/flex_xml/date.xml"
? result="onResult();">
</mx:HTTPService>
<mx:Script>
? <![CDATA[
?? import mx.controls.Button;
?? import mx.collections.SortField;
?? import mx.collections.ArrayCollection;
?? import mx.collections.Sort;
?? import mx.collections.IViewCursor;
?? [Bindable]
?? var datas:ArrayCollection;
?? var cursor:IViewCursor;
?? private function onResult():void{
??? var sort:Sort=new Sort();
??? sort.fields=[new SortField("city",true)];
??? this.datas=http_test.lastResult.blog.channel.item;
??? this.datas.sort=sort;
??? this.datas.refresh();
??? this.cursor=this.datas.createCursor();
?? }
?? private function? searchCity():void{
??? if(search_city.text!=""){
???? if(this.cursor.findFirst({city:search_city.text})){
????? var idx:int=this.datas.getItemIndex(this.cursor.current);
????? this.http_dataGird.scrollToIndex(idx);
????? this.http_dataGird.selectedItem=this.cursor.current;
???? }
??? }
?? }
? ]]>
</mx:Script>

<mx:Panel title="{http_test.lastResult.blog.channel.title}" width="90%" height="90%">
? <mx:Form>
?? <mx:FormItem label="Search">
??? <mx:TextInput id="search_city"/>
?? </mx:FormItem>
?? <mx:FormItem>
??? <mx:Button label="Search City" click="searchCity()"/>
?? </mx:FormItem>
? </mx:Form>
? <mx:DataGrid id="http_dataGird" dataProvider="{datas}"? editable="true" width="100%" height="50%">
?? <mx:columns>
??? <mx:DataGridColumn headerText="标题" dataField="title"/>
??? <mx:DataGridColumn headerText="作者" dataField="author"/>
??? <mx:DataGridColumn headerText="类型" dataField="category"/>
??? <mx:DataGridColumn headerText="城市" dataField="city"/>
?? </mx:columns>
? </mx:DataGrid>
</mx:Panel>
</mx:Application>
转:http://zwh910621.iteye.com/blog/55044

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读