我正在尝试使用详情视图。
这是我的DataSource
我这样传递。
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.
如果我将它直接绑定到DataGrid,它可以正常工作。我在这里做错了什么想法。
答案 0 :(得分:1)
您可以使用
进行调整this.dvOrderInformation.DataSource = Connection.GetDataTable([sql]);
this.dvOrderInformation.DataBind();
Nota:它的正常行不包含列,因此他找不到列名
DataField =“OrderID”为DataColumn.Name
答案 1 :(得分:0)
找到了解决方案。
this.dvOrderInformation.DataSource = Connection.GetDataSet([sql]);
this.dvOrderInformation.DataBind()
关键是我必须使用DataSet而不是DataTable。