0

高度なデータ グリッドの 1 つの列を編集可能にして、エンド ユーザーが右クリックしてクリップボード経由で別のソースにデータをコピーできるようにする機能が必要です。

標準の Datagrid だけでなく、advanceDataGrid に次のコードを実装しようとしていますが、何らかの理由で機能していません。別のページに 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;
}
4

1 に答える 1

0

他の誰かが同じことを試みた場合に備えて、エラーが if(dataFields[i] == '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 です。ただし、他の方法でテキストを変更することはできず、高度なデータ グリッドの 1 つの列に対してのみ使用できます。

 <?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>
于 2013-10-28T14:37:51.777 に答える