728x90
반응형

FLEX로 프로그램을 만들다가 TabNavigator를 이용하여 클릭한 사물의 정보를 표시해주는 것을 만드는데 아래와 같은 에러 메세지가 떨어졌습니다.

TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
(TypeError: Error #1009: null 의 오브젝트 참조의 프롭퍼티 또는 메소드에 액세스 할 수 없습니다.)

무슨 문제 일까..;;
한참을 고민을 했는데요. 자세히 살펴보도록 해야 할것 같아서 좀 구굴링 해보았습니다.

참고 링크
● TabNavigator : TabNavigator 컨테이너는, child containers간에서의 이동을 위해서(때문에) TabBar 컨테이너를 수중에 넣는 것으로, ViewStack 컨테이너를 확장합니다.


일단 제가 만들려고 하는 것을 간단하게 설명 드리겠습니다. 왼쪽에 여러 비행기가 나옵니다. 이 비행기를 마우스로 클릭하면 그 비행기가 가지고 있는 정보를 오른쪽에있는 TabNavigator의 정보란에 뿌려 줍니다. 
TabNavigator는 2개의 Tab으로 구성이 되어있는데 index 0번째는 그냥 항공기의 이름과 같은 정보이고, index 1은 항공기의 경로가 Datagrid로 표현이 됩니다.

간단하게 아래의 화면과 같습니다.



DB에서 정보를 읽어와서 Datagrid의 dataProvider를 접근하는데 #1009 오류가 발생했습니다. 더욱 신기한건 실후 처음에만 에러가 나고 그 후엔 데이터가 잘 들어간다는 겁니다.
처음에 만들어주지 않아 null 에러가 나는것 같은데, 그럼 처음에 어떻게 만들어줄까??

결국 구글링으로 검색 성공~!!!
검색한 사이트는 아래 입니다. 


creationPolicy="all" 로 해라..인데요. 처음에 실행할때 히든으로 감춰진 Tab은 아직 생성이 되어있지 않아서 그런건데 이것은 creationPolicy으로 해결할수 있다..뭐 그런 내용입니다. 

creationPolicy의 자세한 내용은 아래 문서를 참고 하세요.


위 구글링 결과로 아래와 같이 코드를 넣으니 손쉽게 해결 되었습니다.

728x90
반응형
728x90
반응형
FLEX를 사용하다보면 수많은 요청에 따라서 DataGrid를 조작해야하는 일이 생긴다.
그래서 그런지 DataGrid를 이용한 컴포넌트들이 여러곳에서 쉽기편하게 사용될수 있도록 조작되고 있는데, 그중 가장 대표적인것이 구글프로젝트에서 진행하는 TreeGrid , OpenZet.org 의 여러가지 DataGrid 관련 컴포넌트들이 있다. 하지만 이것과 달리 고객에서 요청하는 특별한 케이스의 DataGrid를 만들어야 하는 경우가 있다. 

여러가지 OpenSource를 이용하여 작업을 해도 상관은 없지만, 혹시 모를 경우를 위해서 기본 DataGrid를 이용하여 상황에 맞는 커스텀한 DataGrid를 만들어보자.

일단 그 첫번째로 DB에서 받아온 데이터를 그리드에 표시할때 하나의 셀에 컬럼을 여러개 표시하는 경우이다.
아래 주소의 레퍼런스를 참고하면 좋은 정보가 될것이다.


두번째 예제로 하나의 컬럼에만 링크를 거는 예제를 만들어 보았다.


위 Datagrid를 보면 No를 클릭하였을 경우엔 링크가 걸리지 않지만, NAME 컬럼을 클릭하면 새로운 창으로 링크를 연다.
여기서 링크에 관련된 부분은 아래 부분이다.

 
			public function itemClickHdlr(data:Object):void{

				var contentURL:String = data.URL;
				
				navigateToURL(new URLRequest(contentURL), "_blank"); 
				// 선택된 글을 새창으로 띄우기	
				Alert.show("새창을 띄웠습니다.", "알림");
			} 


그리고 이번 포스트의 핵심 주제인 Datagrid 부분이다.

 
		
			
					
					
						
							
									
							
						
					
					
				
		


위 소스에서 주위해서 봐야 하는 부분이 있는데 바로 Label 필드의 click 이벤트 부분이다.
itemRenderer를 사용할 경우 본문의 Script 문의 함수를 가져다 쓸 경우 outerDocument.itemClickHdlr(data) 이런 식으로 쓴다는 것을 기억하자.
(공통되는 부분을 이렇게 사용하면 좋을 것같다. 이것을 몰라서 20개가 넘는 itemRenderer안에 하나하나 Script를 썼던 적이 있다..  혼자 개 고생 한건가???)

아래는 전체 소스이다.

 


	
	
		
	
	
		
		
		
	
	
	
	
		
			
					
					
						
							
									
							
						
					
					
				
		
	


728x90
반응형
728x90
반응형
FLEX를 사용하다보면 수많은 요청에 따라서 DataGrid를 조작해야하는 일이 생긴다.
그래서 그런지 DataGrid를 이용한 컴포넌트들이 여러곳에서 쉽기편하게 사용될수 있도록 조작되고 있는데, 그중 가장 대표적인것이 구글프로젝트에서 진행하는 TreeGrid , OpenZet.org 의 여러가지 DataGrid 관련 컴포넌트들이 있다. 하지만 이것과 달리 고객에서 요청하는 특별한 케이스의 DataGrid를 만들어야 하는 경우가 있다. 

여러가지 OpenSource를 이용하여 작업을 해도 상관은 없지만, 혹시 모를 경우를 위해서 기본 DataGrid를 이용하여 상황에 맞는 커스텀한 DataGrid를 만들어보자.

일단 그 첫번째로 DB에서 받아온 데이터를 그리드에 표시할때 하나의 셀에 컬럼을 여러개 표시하는 경우이다.
아래 주소의 레퍼런스를 참고하면 좋은 정보가 될것이다.


아래와 같은 예제를 만들어 보았다.



dataGrid 마지막 컬럼의 "制御対象空域" 부분을 보면 ArrayCollection 의 데이터 ETC1, ETC2, ETC3 를 하나의 셀에 보여지게 하는것을 확인 할수 있다.

소스는 아래를 참고..

 



	
		
	
	
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	
	
	
	
	
		
		
			
			
			
				
					
					
					
					
					
				
				
				
					
				
					
							
							
							
							
				
				
				
				
				
				
				
				
				
				
			
		
			
			
				
					
					
					
					
					
					
					
					
					
					
					
					
					

					
						
							
									
									
									
									
								
							
						
					
					
				
			
		
		
		
	
	



728x90
반응형

+ Recent posts