2009-03-01 1 views

답변

5

바인딩 할 때 데이터 테이블이 필요하지 않습니다. 목록/열거 형 등이 필요합니다. 예를 들어, 행 번호 알고있는 경우 : 우리는 런타임 전용 속성 (열에서 즉 데이터)를 얻기 위해 (오히려 DataRow보다) DataRowView를 사용할 필요가

DataRowView row = dt.DefaultView[1]; // second row 
detailsView1.DataSource = new DataRowView[] {row}; 
detailsView1.DataBind(); 

참고.

public static DataRowView[] ForBinding(this DataRow row) 
{ 
    foreach (DataRowView rowView in row.Table.DefaultView) 
    { 
     if (ReferenceEquals(rowView.Row, row)) 
     { 
      return new DataRowView[] { rowView }; 
     } 
    } 
    throw new ArgumentException("Row not found in the default view", "row"); 
} 

과 : 어쨌든

detailsView1.DataSource = row.ForBinding(); 
detailsView1.DataBind(); 
+0

Web Forms을 다시 생각해 보면 그들이 엉덩이에 어떤 고통을 느끼는지 알 수 있습니다. MVC로 옮겨서 너무 기쁩니다. – Jason

1

당신이 원하는 경우 네, 가장 간단한 방법 :

이럴이있는 더 나은 방법이있다 1 개의 필드만을 표시하면 출력 매개 변수를 사용할 수 있지만, detailview에 필드를 두 개 이상 표시하면 가장 간단한 방법입니다.

+0

이상의 필드 ...하지만 감사 : – akosch

+0

후 당신이 DataRow이있는 경우,이 방법은 쉽게 예를 들어, 유틸리티 방법으로 확장 방법을 포장 할 수있다 그 위에 필터링 할 수있는 데이터 테이블을 선택하는 것이 더 간단합니까? – Canavar

관련 문제