2012-09-21 3 views
0

Details 뷰를 사용하려고합니다. DetailsView가 DataSource로 작동하지 않습니다.

내가 이런 식으로 통과하고 내 데이터 소스 enter image description here

입니다.

IEnumerable<DataRow> row = Connection.GetDataTable([sql]).AsEnumerable(); 

this.dvOrderInformation.DataSource = row; 
this.dvOrderInformation.DataBind(); 

저는 그렇게 바인딩하고 있습니다.

<asp:DetailsView ID="dvOrderInformation" runat="server" Height="50px" Width="100%" AutoGenerateRows="false"> 
    <HeaderTemplate> 
     Order 
    </HeaderTemplate> 
    <FieldHeaderStyle Width="150px" /> 
    <Fields> 
     <asp:BoundField HeaderText="Order Number:" DataField="OrderID" /> 
    </Fields> 
</asp:DetailsView> 

나는 이것을 시도 할 때 나는 메시지를 받는다.

DataBinding: 'System.Data.DataRow' does not contain a property with the name 'OrderID'. 

또는

A field or property with the name 'OrderID' was not found on the selected data source. 

내가 직접 그것을 잘 작동 데이터 그리드이 바인딩합니다. 어떤 아이디어가 내가 여기서 잘못하고 있는지.

답변

0

찾을입니다 해결책.

this.dvOrderInformation.DataSource = Connection.GetDataSet([sql]); 
this.dvOrderInformation.DataBind() 

키는 DataSet이 아니라 DataTable을 사용해야한다는 것입니다.

1

당신은

this.dvOrderInformation.DataSource = Connection.GetDataTable([sql]); 
this.dvOrderInformation.DataBind(); 

의 Nota으로 조정할 수 있습니다 : 그것은 열을 포함하지 않는 행 정상, 그래서 그는 열 이름을 찾을 수없는

을 DataField = "OrderID를은"DataColumn.Name