2013-08-14 4 views
3

그래서 클래스로하는 int 추가하여 DataRow 클래스를 확장하고자이 분명히 지금 간단한상속하는 방법의 DataRow 클래스는 당신이 원할 때

public class DataRowWithInt : DataRow 
{ 
    // Properties /////////////////////////////////////////////////// 

    public int integer 
    { 
     get; 
     set; 
    } 

    // Constructor ////////////////////////////////////////////////// 

    public DataRowWithInt(DataRowBuilder builder) 
     : base(builder) 
    { 
    } 
} 

입니다 DataTable.NewRow()를 할 수 있습니다 전화해야 할 새 행을 만드십시오.

DataTable intDataTable = new DataTable(); 
intDataTable.Columns.Add("temp"); 
DataRowWithInt row = intDataTable.NewRow(); 

그러나 이것은 변환 오류를줍니다. 이 문제를 피하고 DataRowWithIntintDataTable으로 가져 오려면 어떻게해야합니까?

감사합니다.

- 편집 -

나는 DataTable을 클래스는 DataRowWithIn 저를 반환하지 않을 것을 알고 있습니다. 다음, 나는 상속 DataTable의 클래스를 생성하고 싶습니다하지만 난 당신이 단순히 코멘트에 @ 팀의 제안에 따라 유형 int의 하나를 DataColumn에 DataTable을을 사용할 수없는 경우 NewRow 클래스

+1

왜 'DataTable.NewRow'가 클래스의 인스턴스를 반환한다고 생각합니까? 그 외에도 열이'int' 열이어야한다면'DataColumnCollection.Add'에서 적절한 타입을 사용하십시오 :'int "(int, int)); –

+0

그것은 내 행을 반환하지 않습니다. 그러나 DataTable 클래스를 자신의 클래스로 상속하는 경우에도 DataTable.NewRow()가 내부적으로 수행하는 작업을 알지 못하므로 덮어 쓸 수 없습니다. –

+0

또한이 int를 열에 추가하는 것을 원하지 않습니다. 행이이 int에 대해 알기를 원하지만 테이블에 표시하지 않기를 바랍니다. –

답변

5

에 쓰기 모르겠어요 형식화 된 DataTable을 만드는 것을 고려하십시오. 형식화 된 DataTable을 사용하면 열 이름과 형식은 물론 NewRow()의 작동 방식을 비롯한 다양한 DataTable 기능 및 동작을 정의 할 수 있습니다.

이 일을 데모가 codeproject.com에서이 문서를 통해에서 찾을 수 있습니다

:
How to Manually Create a Typed DataTable

입력 DataTable에 대한 좋은 점은 인덱스 또는 열을 기준으로에 '간접적으로'참조 열을 필요로하지 않는 것입니다 Visual Studio의 Intellisense에서 속성 표기법을 사용하여 열을 참조 할 수 있습니다. 다음은 그 예입니다 :

var intDataTable = new YourTypedDataTable(); 
YourTypedDataRow row = intDataTable.NewRow(); 
row.Temp = 100; 
intDataTable.Rows.Add(row); 
+0

그게 내 문제를 해결했습니다. 감사. –

+0

@ publicst119 도와 줘서 기쁩니다. –