c# - 将数据表绑定(bind)到 gridview 的问题

标签 c# asp.net gridview datatable

我正在调用服务器并返回一个结果数据表,但是当我尝试绑定(bind)到 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();
}

The Search(填充 DataTable 并将其返回到上面的变量 resultsList) dv 是一个 DefaultView 并且 ds 是一个数据集

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

dt = dv.ToTable();
return dt;

最佳答案

问题是我认为您将 GridView 绑定(bind)到数据表的 Columns 属性:

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

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

而是绑定(bind)到 DataTable 本身:

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

关于c# - 将数据表绑定(bind)到 gridview 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34139814/

相关文章:

c# - 在动态生成的程序集中捕获错误

jquery - ASP TreeView 控件

c# - 如何为 DetailsView 的插入和取消按钮分配不同的样式?

jquery - jqPlot 的打印选项

c# - Gridview在 View 状态中使用自定义对象插入删除

c# - 在某些条件下显示特定单词 Eval Asp.net

c# - 在 Linq to Entities 和 Linq to Object 之间共享表达式

c# - 如何打印出树结构?

c# - SQL数据层次结构

android - 图片来自网站?