2009-09-29 3 views
0

강력한 형식의 DataTable을 DataGridView에 채우는 간단한 응용 프로그램을 만듭니다. 내 문제는 모든 셀에 데이터가 포함되어 있음에도 불구하고 비어있는 것처럼 보입니다. 셀의 기본 값을 가져올 수있는 CellDoubleClick 이벤트가 있습니다 (예상대로 입력 됨). 그러나 열은 비어있는 것으로 표시됩니다.DataGridView는 입력 한 DataTable에 바인딩 할 때 빈 셀을 표시합니다.

INode 형식의 개체에는 모두 ToString() 메서드가 정의되어 있으며 DataGridView는 셀 내용으로 표시되지만 표시되지 않는 지능형 메서드라고 가정합니다. 여기

내 현재의 테스트 코드입니다 :

 //Add some fake test data 
     DataTable data = new DataTable(); 
     data.Columns.Add("Subject"); 
     data.Columns.Add("Predicate"); 
     data.Columns.Add("Object"); 
     data.Columns["Subject"].DataType = typeof(INode); 
     data.Columns["Predicate"].DataType = typeof(INode); 
     data.Columns["Object"].DataType = typeof(INode); 

     Graph g = new Graph(); 
     DataRow row = data.NewRow(); 
     row["Subject"] = g.CreateURINode(new Uri("http://example.org/subject")); 
     row["Predicate"] = g.CreateURINode(new Uri("http://example.org/predicate")); 
     row["Object"] = g.CreateURINode(new Uri("http://example.org/object")); 
     data.Rows.Add(row); 
     this.dvwBrowser.DataSource = data; 
     this.dvwBrowser.AutoResizeColumns(); 

어떻게이있는 DataGridView에 DataTable에 바인딩 할 때 내가 셀에 표시 할 toString() 메서드의 값을받을 수 있나요?

답변

1

dvwBrowser 열은 기본 .NET Framework 데이터 형식 및 Byte [] 중 하나가 아닌 사용자 정의 형식 (INode)을 사용합니다. INode는 최소한 SerializableAttribute으로 표시되어야합니다. 더 자세한 설명은 here입니다 (코드 예제 이전의 페이지 하단).

+0

답변을 주셔서 감사합니다. 언 바운드 DataGridView를 만들고 방금 ToString() 값을 그리드에 고정하고 그런 다음 필요에 따라 DataTable을 폼의 멤버 변수로 유지하고 참조하십시오. – RobV