是否可以将asp:GridView绑定到List <T>?

Row*_*haw 6 c# asp.net data-binding gridview

我有一个GridView:

<asp:GridView ID="grdRestitutions" runat="server" AutoGenerateColumns="False">
 <Columns>
  <asp:BoundField DataField="JobNumber" HeaderText="Job" />
  <asp:BoundField DataField="ContainerType" HeaderText="Type" />
  <asp:BoundField DataField="ReleaseDate" HeaderText="Date" />
  <asp:BoundField DataField="Commodity" HeaderText="Commodity" />
  <asp:BoundField DataField="GrossWeight" HeaderText="Weight" />
  <asp:BoundField DataField="SpecialInstructions" HeaderText="Special Instructions" />
 </Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

我正在尝试将DataSource设置为List<Restitution>()where,这Restitution是一个仅由公共成员组成的公共结构; 即:

public struct Restitution
{
    public int ContainerReleasesId;
    public int ContainerId;
    public System.DateTime ReleaseDate;
    public int DepotId;
    public string DepotName;
    public string JobNumber;
    public string BillOfLadingNumber;
    public string BookingType;
    public string Commodity;
    public string SpecialInstructions;
    public int GrossWeight;
    public bool Confirmed;
    public bool RecievedFlag;
    public bool ReleaseSource;
    public int ContainerTypeId;
    public string InOut;
    public string ContainerTypeDescription;
}
Run Code Online (Sandbox Code Playgroud)

数据绑定看起来也相当无害:

grdRestitutions.DataSource = restitutions;
grdRestitutions.DataBind();
Run Code Online (Sandbox Code Playgroud)

但是,在DataBind()语句中抛出一个异常,其中包含以下消息:

"在所选数据源上找不到名为'JobNumber'的字段或属性."

我不明白为什么这不起作用; 虽然大多数示例和用例似乎都使用了DataSets,但它似乎应该支持对象实现IEnumerable.为了让它能够工作,我有什么特别的事吗?

Bal*_*a R 11

转换公共属性的所有公共字段,它应该工作.

public struct ContainerRelease
{
    public int ContainerReleasesId {get; set;} 
    public int ContainerId {get; set;} 
    public System.DateTime ReleaseDate  {get; set;} 
    ...
}
Run Code Online (Sandbox Code Playgroud)