2013-06-19 2 views
1

MSDN에 따르면 DataRow단일 열의 원래 버전을 가져올 수 있습니다. 그러나이 작업에는 열 인덱스 또는 열 이름을 사용해야합니다. 이것은 강력한 유형의 데이터 세트이며 마술 열 인덱스 번호 나 문자열 리터럴을 사용하여 유지 관리의 어려움을 겪지 않으려 고합니다.강하게 입력 된 전체 DataRow의 원래 값을 얻는 방법?

강력한 형식의 전체 행을 가져올 방법이 있습니까? 또는 이것이 가능하지 않은 경우 강력한 형식의 열을 사용하여 강력한 형식의 열 하나를 가져 오는 방법이 있습니까?

+0

난 당신이에 의해 원하는 것을 이해하지 않는다 . – DonBoitnott

+0

@DonBoitnott : 열 인덱스 또는 문자열 리터럴을 사용하지 않고 값을 가져 오는 방법입니다. 이상적으로는 디자이너에서 열이 변경 될 때 자동으로 업데이트되는 일종의 열 식별자입니다. 강력한 형식의 열은 실제 데이터 형식으로 변환하지 않고도 열의 값을 의미합니다. – poke

+0

당신은 원하는 칼럼에 대한 개념을 프로그램에 부여해야 할 것입니다. 이것은 색인이나 이름을 지정해야한다는 것을 의미합니다. 그 주위에 정말로 방법이 있다고 생각하지 마십시오. –

답변

1

당신이 여기에서 전반적으로 파업 할까봐 걱정됩니다. OriginalModified RowVersion의 차이점은 유한 기간 인 AcceptChanges()까지만 존재합니다. 그리고 그 중심에 Columns 컬렉션이 접근과 ArrayList입니다 :

public DataColumn this[int index] { get; } 
public DataColumn this[string name] { get; } 

나는 당신이 DataColumn 다른 방법으로 찾을 것 표시되지 않습니다. 하나의 강력한 형식의 열을 사용하여 강력한 형식의 참조

+0

getter가 이것을 허용하지 않는 이유를 설명하는 +1. 디자이너 코드 생성기가 테이블의 각 열에 대해 자동으로 getter를 가지고 있다면 좋을 것입니다. – poke

+0

@DonBoitnott 게시물이 오래되었음을 알고 있지만 acceptchanges가 호출되기 전에 차이점을 찾고 있습니다. "원본 및 수정 된 RowVersion의 차이는 AcceptChanges()까지만 존재합니다."예, 제가 원했던 것입니다. 그 대답도! 전체 행을 열 반복에 의한 열이 아니길 원합니다. – Ken

2

예 :`강력한 형식의 reference`를 사용하여 하나의 강력한 형식의 열을 얻을 :

// DataTable... 
SkZapDataSet.vdSkZapDocumentDataTable dt 
    = args.Row.Table as vdSkZapDocumentDataTable; 
// DataRow... 
SkZapDataSet.vdSkZapDocumentRow dr 
    = args.Row as SkZapDataSet.vdSkZapDocumentRow; 
// Value... 
int id = (int)dr[dt.DocumentIdColumn.ColumnName, DataRowVersion.Original]; 
관련 문제