2013-10-25 2 views
0

Мне нужна возможность сделать один столбец расширенной сетки данных редактируемым, чтобы мой конечный пользователь мог щелкнуть правой кнопкой мыши и скопировать данные из него в другой источник через буфер обмена.скопируйте и вставьте из расширенного datagrid

Я ищу для реализации следующего кода в advanceDataGrid, а не только для стандартного Datagrid, но по какой-то причине он не работает, я реализовал его на другой странице как dataGrid и работает правильно.

import com.jpmc.ctrbs.dashboard.alarms.renderers.NonEditableTextInputEditor; 

if(dataFields[i] == 'EVENT_DESCRIPTION') { 
dataGridColumn.editable = true; 
dataGridColumn.itemEditor = new mx.core.ClassFactory(NonEditableTextInputEditor); 
dataGridColumn.editable = false; 
} 
+0

Я понял, что у меня было не так, в случае, если кто-то есть попытки же вот мой код ошибка была в если (поля данных [я] == «EVENT_DESCRIPTION») { \t \t \t import com.jpmc.ctrbs.dashboard.alarms.renderers.NonEditableTextInputEditor; if (dataGridColumn.dataField == "EVENT_DESCRIPTION") { dataGridColumn.editable = true; dataGridColumn.itemEditor = new mx.core.ClassFactory (NonEditableTextInputEditor); } else { dataGridColumn.editable = false; } – Dye

ответ

0

Я понял, что у меня было не так, в случае, если кто-то есть попытки же вот мой код ошибка была в если (поля данных [я] == «EVENT_DESCRIPTION») {

import com.jpmc.ctrbs.dashboard.alarms.renderers.NonEditableTextInputEditor; 

if(dataGridColumn.dataField == "EVENT_DESCRIPTION") { 
dataGridColumn.editable = true; 
dataGridColumn.itemEditor = new mx.core.ClassFactory(NonEditableTextInputEditor); 
} 
else { 
dataGridColumn.editable = false; 
} 

Это NonEditableTextInputRender.mxml, который позволяет конечному пользователю копировать текст, но не изменять его каким-либо другим способом и только для одного столбца в расширенной сетке данных.

<?xml version="1.0" encoding="utf-8"?> 
<mx:Canvas xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    horizontalScrollPolicy="off"> 

<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

<fx:Script> 
    <![CDATA[ 
     import mx.controls.Alert; 
     import mx.events.FlexEvent; 

     [Bindable] 
     public var text:String = ""; 

     override public function set data(value:Object):void { 
      super.data = value; 
      else if(value && value.EVENT_DESCRIPTION) { 
       try { 
        textInput.text = value.EVENT_DESCRIPTION; 
        text = value.EVENT_DESCRIPTION; 
        textInput.selectionBeginIndex = 0; 
        textInput.selectionEndIndex = text.length; 
        textInput.selectRange(0,text.length); 
       }catch(err:Error) { 
       } 
      } 
     } 

     protected function textInput_clickHandler(event:MouseEvent):void 
     { 
      else if(data && data.EVENT_DESCRIPTION) { 
       try { 
        textInput.text = data.EVENT_DESCRIPTION; 
        text = data.EVENT_DESCRIPTION; 
        textInput.selectionBeginIndex = 0; 
        textInput.selectionEndIndex = data.EVENT_DESCRIPTION.toString().length; 
        textInput.selectRange(0,data.EVENT_DESCRIPTION.toString().length); 
       }catch(err:Error) { 
       } 
      } 
     } 



    ]]> 
</fx:Script> 

<mx:TextInput id="textInput" editable="false" doubleClick="textInput_clickHandler(event)" maxChars="1000" /> 
</mx:Canvas>