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