将数据表绑定到gridview的问题

时间:2015-12-07 17:41:06

标签: c# asp.net gridview datatable

我正在调用服务器并返回结果的数据表但是当我尝试绑定到gridview时,它会抛出一个错误,即无法在数据源上找到字段或属性。我对gridviews和.NET控件更新,所以任何帮助都会受到赞赏。

GridView

<asp:GridView ID="gv_Search" AutoGenerateColumns="false" runat="server" AllowSorting="true" OnSorting="gv_Search_Sorting">
   <Columns>
      <asp:HyperLinkField NavigateUrl="#" Text="View"/>
      <asp:BoundField SortExpression="Hdefendant_name" HeaderText="Name" DataField="Hdefendant_name"/>
      <asp:BoundField  SortExpression="Hdefendant_location" HeaderText="Location" DataField="Hdefendant_location"/>
      <asp:BoundField  SortExpression="Hdate" HeaderText="Date Entered" DataField="Hdate"/>
    </Columns>
</asp:GridView>

Gridview页面的代码隐藏 (resultsList是一个DataTable类型)

var resultsList = defendantRepository.Search(start, end, name, location);

if (Defendant.hasRecords)
{
    ViewState["PreliminaryInjunctions"] = resultsList.Columns;
    gv_Search.DataSource = resultsList.Columns;
    gv_Search.DataBind();
}

搜索(填充DataTable并将其从上面返回到变量resultsList) dv是一个DefaultView和 ds是一个DataSet

using (var da = new SqlDataAdapter())
{
  da.SelectCommand = cmd;
  da.Fill(ds, "PreliminaryInjunctions");
}
dv = ds.Tables[0].DefaultView;

dt = dv.ToTable();
return dt;

1 个答案:

答案 0 :(得分:1)

问题是我相信您将GridView绑定到数据表的Columns属性:

gv_Search.DataSource = resultsList.Columns;
gv_Search.DataBind();

该属性的类型为DataColumnCollection,它不包含与BoundField元素中定义的名称相匹配的名称,因此也就是错误。

而是绑定到DataTable本身:

gv_Search.DataSource = resultsList;
gv_Search.DataBind();