사용자 지정 itemRenderer가있는 dataGrid가 있습니다. dataGrid에서 적어도 두 번 탭하면 매번 테이프 아래의 셀이 선택됩니다. saveBackDataGridContent() 메서드에서 코드의 주석을 제거하면 이런 일이 발생하지 않습니다!사용자 지정 데이터 격자에서 매우 이상한 동작
두 번째 문제는 setStyle ("horizontalScrollPolicy", "off");을 설정했지만 입력 한 텍스트보다 Line이 짧으면 horizontalScrollBar가 활성화된다는 것입니다 (업데이트 :이 문제는 아래)!
누가이를 해결할 수 있습니까?
CustomRenderer.mxml :
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="dataService.send()">
<mx:Script>
<![CDATA[
import components.ChoiceRenderer;
import mx.rpc.events.ResultEvent;
import mx.events.DataGridEvent;
private function resultHandler(event:ResultEvent):void {
var doc:XML = event.result as XML;
testGrid.dataProvider = doc.Records.BackSide;
}
private function saveBackDataGridContent(event:DataGridEvent):void{
testGrid.dataProvider[event.rowIndex].TextElement = event.currentTarget.itemEditorInstance.text;
}
]]>
</mx:Script>
<mx:HTTPService id="dataService" result="resultHandler(event)" url = "data/example.xml" resultFormat="e4x"/>
<mx:DataGrid id="testGrid" editable="true" itemEditEnd="saveBackDataGridContent(event)">
<mx:columns>
<mx:DataGridColumn itemRenderer="components.ChoiceRenderer" width="230"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
ChoiceRenderer.as
package components
{
import mx.containers.HBox;
import mx.controls.CheckBox;
import mx.controls.Label;
public class ChoiceRenderer extends HBox
{
private var correctAnswer:CheckBox;
private var choiceLabel:Label;
public function ChoiceRenderer()
{
super();
setStyle("horizontalScrollPolicy", "off");
correctAnswer = new CheckBox;
addChild(correctAnswer);
choiceLabel = new Label;
addChild(choiceLabel);
}
override public function set data(xmldata:Object):void{
if(xmldata.name() == "BackSide"){
super.data = xmldata.TextElement[0];
choiceLabel.text = xmldata.TextElement[0].toString();
}
}
}
}
,617,example.xml
<TopContainer>
<Records>
<BackSide>
<TextElement>first</TextElement>
</BackSide>
<BackSide>
<TextElement>second</TextElement>
</BackSide>
<BackSide>
<TextElement>third</TextElement>
</BackSide>
<BackSide>
<TextElement>fourth</TextElement>
</BackSide>
<BackSide>
<TextElement>fifth</TextElement>
</BackSide>
<BackSide>
<TextElement>sixth</TextElement>
</BackSide>
</Records>
</TopContainer>
나는이 문제가 너무 크다는 것을 믿을 수 없다. 그러나 나는 지금까지 어떠한 해결책도 찾지 못했다 ... 내가하려고하는 것이 표준적인 기능이 아닌가? ?
감사 마르쿠스
Markus는 미래에 두 번 올리는 것이 아니라 질문을 편집 할 때 질문을 편집하여 목록 맨 위로 올리는 것을 알고 있습니다. 이것은 사람들이 일하지 않은 것을 볼 수 있기 때문에 일반적으로 더 나은 선택입니다. 이 질문을 삭제하고 이전 질문을 수정하는 것이 좋습니다. – invertedSpear
감사합니다. 귀하의 요지를 이해합니다! – Markus
예제를 단순화하여 우리가 복사하여 붙여 넣기 할 수 있다면 도움을 얻을 수 있습니다.(우리는 응용 프로그램 mxml 파일에 복사하여 즉시 문제를보기 위해 실행할 수있는 무언가를 위해 촬영하십시오.)이 예제 코드는 모두 사용자의 컴퓨터에서 컴파일하려고하면 혼동을 일으키고 작동하지 않을 것입니다 (즉, 누락 된 componenets 또는 데이터 소스). 나는 코드에서 실제로 파고 들지 않고 할 수있는 모든 도움을 당신에게주었습니다. 그러나 100 명의 담당자조차도 당신의 예제를 컴파일하기 위해 취할 45 분을 보낼 것입니다. – invertedSpear