当双击DataGrid的一项时,弹出窗口进行内容编辑.

本文转载自:http://www.cnblogs.com/xxcainiao/archive/2008/05/03/1180462.html

 还可以参考:http://www.iteye.com/topic/356788

 

通过PopUpManager和itemRenderer实现。

示例:

代码:
MXML文件:

<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  xmlns:local ="*"   >
    
< mx:Array  id ="arr" >
        
< mx:Object  articleName ="Finding out a characters Unicode character code Downloading the latest Adobe Labs version of Flex 3 SDK/Flex Builder 3 (codename: Moxie)"  data ="15"   />
        
< mx:Object  articleName ="Setting an icon in an Alert control"  data ="14"   />
        
< mx:Object  articleName ="Setting an icon in a Button control"  data ="13"   />
        
< mx:Object  articleName ="Installing the latest nightly Flex 3 SDK build into Flex Builder 3"  data ="10"   />
        
< mx:Object  articleName ="Detecting which button a user pressed to dismiss an Alert dialog"  data ="9"   />
        
< mx:Object  articleName ="Using the Alert control Formatting data tips in a Slide"  data ="8"   />
    
</ mx:Array >
    
< mx:ArrayCollection  id ="AC"  source =" {arr} "   />      

    
< mx:DataGrid  height ="250"  dataProvider =" {AC} "  variableRowHeight ="true"  width ="60%"  editable ="true" >
        
< mx:columns >
            
< mx:DataGridColumn  dataField ="data"  headerText ="ID"  editable ="false"  width ="125" />
            
< mx:DataGridColumn 
                
editable ="false"  wordWrap ="true"
                headerText
="Article Name"                
                itemRenderer
="MyRenderer"  dataField ="articleName" />
        
</ mx:columns >
    
</ mx:DataGrid >
</ mx:Application >


itemRenderer:
<? xml version="1.0" encoding="utf-8" ?>
< mx:Text  xmlns:mx ="http://www.adobe.com/2006/mxml"  
    implements
="mx.controls.listClasses.IDropInListItemRenderer"  
    toolTip
="Double Click to Edit…"  doubleClick ="callLater(openPopup)"  doubleClickEnabled ="true"
    text
=" {txt} " >

    
< mx:Script >
    
<![CDATA[
        import mx.controls.DataGrid;
        import mx.controls.listClasses.ListData;
        import mx.controls.dataGridClasses.DataGridListData;
        import mx.controls.listClasses.BaseListData;
        import mx.managers.PopUpManager;
        import mx.events.FlexEvent;

        private var _listData:DataGridListData;             
    
        [Bindable]
        public var txt:String;
    
        private var pop:Popup

        override public function set data(value:Object):void {
            super.data = value;         
            txt=data[_listData.dataField];
        }

        override public function get data():Object {
            return super.data;
        }            
        
        override public function get listData():BaseListData
        {
            return _listData;
        }
    
        override public function set listData(value:BaseListData):void
        {
            _listData = DataGridListData(value);
        }   

        private function openPopup():void{
            pop= Popup(PopUpManager.createPopUp(this.owner,Popup,true));
            pop.txt=this.txt;
            pop.opener=this;
        }           
        
        public function updateDP(str:String):void{
            var myDG:DataGrid=this.owner as DataGrid;
            var row:int=_listData.rowIndex+myDG.verticalScrollPosition;
            this.data[_listData.dataField]=str;
            myDG.dataProvider.itemUpdated(data);
        }
    
]]>
    
</ mx:Script >
</ mx:Text >


popup:
<? xml version="1.0" encoding="utf-8" ?>
< mx:TitleWindow  xmlns:mx ="http://www.adobe.com/2006/mxml"
    width
="350"  height ="250"  showCloseButton ="false"  creationComplete ="centerMe()"
    defaultButton
=" {btnSave} " >  

    
< mx:Script >
        
<![CDATA[
            import mx.managers.FocusManager;
            import mx.managers.PopUpManager;

            [Bindable]
            public var txt:String;
            
            public var opener:Object;
            
            
            private function save():void{
                (opener as MyRenderer).updateDP(ta.text);
                cancel();
            }
            
            private function cancel():void{
                PopUpManager.removePopUp(this);
                returnFocus();
            }
            
            private function returnFocus():void{
                opener.setFocus();
            }
            
            private function centerMe():void{
                PopUpManager.centerPopUp(this);
                ta.setFocus();          
            }
            
        
]]>
    
</ mx:Script >

    
< mx:TextArea  id ="ta"  text =" {txt} "  height ="100%"  width ="100%" />
    
< mx:ControlBar >
        
< mx:HBox >
            
< mx:Button  id ="btnSave"  label ="save"  click ="save()" />
            
< mx:Button  id ="btnCancel"  label ="cancel"  click ="cancel()" />              
        
</ mx:HBox >
    
</ mx:ControlBar >
</ mx:TitleWindow >

=========实际应用中进行了修改=====================================

itemRenderer.mxml文件中:

<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml"
    implements="mx.controls.listClasses.IDropInListItemRenderer" 
    toolTip="单击进行编辑..."  click="callLater(openPopup)"
    text="{txt}">
<!--mx:Text 改为mx:Label 因为在datagrid中调用时全部显示,不能缩略显示-->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JeeCG Datagrid双击进行编辑,可以使用 EasyUI 的 ComboGrid 组件来实现下拉框多选。 首先,在需要进行多选的列中使用 ComboGrid 组件,例如: ``` {field:'city',title:'City',width:80,editor:{ type:'combogrid', options:{ panelWidth:400, idField:'id', textField:'text', url:'get_cities.php', multiple:true, columns:[[ {field:'id',title:'ID',width:60}, {field:'text',title:'City Name',width:120}, {field:'country',title:'Country',width:100} ]] } }} ``` 在上面的代码中,我们将一个名为 `city` 的列使用了 ComboGrid 组件,并设置了 `multiple:true` 以启用多选功能。同,我们也设置了 ComboGrid 组件的 `url` 属性来指定获取下拉框选项的数据源。 接下来,我们需要编写 `get_cities.php` 文件来获取下拉框选项的数据源。在这个文件中,我们可以使用 PHP 代码从数据库中获取城市列表,然后将其以 JSON 格式返回给前端页面。 示例代码: ```php <?php $host = 'localhost'; $user = 'root'; $pass = 'password'; $dbname = 'test'; // Connect to database $conn = mysqli_connect($host, $user, $pass, $dbname); if (!$conn) { die('Could not connect: ' . mysqli_error()); } // Retrieve city list from database $result = mysqli_query($conn, 'SELECT * FROM cities'); // Convert result to JSON format $rows = array(); while ($r = mysqli_fetch_assoc($result)) { $rows[] = $r; } echo json_encode($rows); // Close database connection mysqli_close($conn); ?> ``` 在上面的 PHP 代码中,我们首先连接到数据库,然后从 `cities` 表中获取城市列表,并将其转换为 JSON 格式返回给前端页面。最后,我们关闭数据库连接。 当用户在 JeeCG Datagrid双击进行编辑,会一个下拉框供用户选择。用户可以通过在下拉框中进行搜索或直接选择多个选项来完成多选操作。用户选择的选项会以逗号分隔的字符串形式保存在 JeeCG Datagrid 中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值