我正在调用服务器并返回结果的数据表但是当我尝试绑定到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;
答案 0 :(得分:1)
问题是我相信您将GridView绑定到数据表的Columns
属性:
gv_Search.DataSource = resultsList.Columns;
gv_Search.DataBind();
该属性的类型为DataColumnCollection
,它不包含与BoundField
元素中定义的名称相匹配的名称,因此也就是错误。
而是绑定到DataTable本身:
gv_Search.DataSource = resultsList;
gv_Search.DataBind();