有这样的两个接口它们的关系如下:
    public interface ITabloidBase 
    { 
        int ID { get; set; }
        string Title { get; set; }
        DateTime Date { get; set; }
    }
    public interface IBreviary : ITabloidBase
    {
        int ColumnId { get; set; }
        int ViewTimes { get; set; }
    }
页面上有如下的控件:
    <asp:GridView ID="GridView1" runat="server"  Width="100%" 
    AllowPaging="True" 
    AllowSorting="True" 
    GridLines="None" AutoGenerateColumns="false"
    DataSourceID="ObjectDataSource1" onrowdatabound="GridView1_RowDataBound">
    <HeaderStyle BackColor="#efefef" Height="20" />
<Columns>
<asp:BoundField DataField="Date"  HeaderText="Date" SortExpression="Date" />
</Columns>
    </asp:GridView>
数据源ObjectDataSource1返回的是List<IBreviary>类型运行时抛出System.Web.HttpException: 在选定的数据源上未找到名为“Date”的字段或属性在后台代码是可以找到的,为什么使用BoundField的DataField找不到呢?

解决方案 »

  1.   

    <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />你能找到Title?
      

  2.   

    在绑定的控件内只能ColumnId,ViewTimes
      

  3.   

    Gridview的数据源可为dataview,dataset,datatable,list 等,只要符合Ilist 结口的数据集合.
      

  4.   

    数据源ObjectDataSource1返回的是List<IBreviary>类型,这里有问题吗?
      

  5.   

    ObjectDataSource1你可以先将返回的类型换成其他的  看行不行  我怀疑是不是因为List<IBreviary>这个返回类型并不符合Ilist 接口
      

  6.   

    把IBreviary接口改成如下是可以的
      public interface IBreviary 
      {
      int ID { get; set; }
      string Title { get; set; }
      DateTime Date { get; set; }
      int ColumnId { get; set; }
      int ViewTimes { get; set; }
      }