在所选数据源上未找到名称为 'Id' 的字段或 属性
A field or property with the name 'Id' was not found on the selected data source
我不确定我在这里错过了什么?我刚刚更改了我的 sql 声明,现在它说它没有阅读 "ID" 有人可以帮我吗?
这是我的 html 代码:
<asp:GridView ID="gvCustomerOrders" runat="server" Width="940px" HorizontalAlign="Center"
AutoGenerateColumns="false" AllowPaging="True" CssClass="table table-hover table-striped" OnPageIndexChanging="gvCustomerOrders_PageIndexChanging">
<Columns>
<asp:BoundField DataField ="Id" HeaderText ="Id" ItemStyle-Width="100" >
<ItemStyle Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField ="CustomerName" HeaderText ="Name" />
<asp:BoundField DataField ="CustomerPhoneNo" DataFormatString= "{0:(###) ###-####}" HeaderText ="PhoneNo" />
<asp:BoundField DataField ="CustomerEmailID" HeaderText ="Email" />
<asp:BoundField DataField ="Name" HeaderText ="Product" />
<asp:BoundField DataField ="TotalPrice" DataFormatString="{0:C2}" HeaderText ="Price" />
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl ='<%# Eval("Id", "~/Admin/OrderDetails.aspx?Id={0}") %>'
Text="View Details" Target="_blank" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
和后面的代码:
public void bindgrid()
{
SqlConnection conn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True");
SqlCommand cmd = new SqlCommand("select DISTINCT STUFF((SELECT ',' + p.[name] FROM Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id", conn);
SqlDataAdapter da = new SqlDataAdapter("", conn);
da.SelectCommand = new SqlCommand("select DISTINCT STUFF((SELECT ',' + p.[name] FROM Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id", conn);
DataSet ds = new DataSet();
da.Fill(ds, "data");
gvCustomerOrders.DataSource = ds.Tables[0].DefaultView;
gvCustomerOrders.DataBind();
}
我真的迷失了为什么它给我错误
A field or property with the name 'Id' was not found on the selected data source.
您的查询:
select DISTINCT STUFF((SELECT ',' + p.[name] FROM Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id
没有 return 名为 'Id'
的列
但您要在此处绑定 Id
列:
<asp:BoundField DataField ="Id" HeaderText ="Id" ItemStyle-Width="100" >
我猜您只需要在查询中包含来自客户 table 的 'Id' 列:
select DISTINCT Id, STUFF((......
看到你有一个 <asp:BoundField../>
和 DataField ="Id"
并且你正在使用的查询不会获取名称为 "Id
的任何列,如果你获取该列意味着这个错误将得到解决.或者,如果在这种情况下不需要,请从前端删除 BoundField
。
注意:- 您应该在绑定集合中提供所有指定的 DataField
,这意味着您应该通过查询
获取这些列
我不确定我在这里错过了什么?我刚刚更改了我的 sql 声明,现在它说它没有阅读 "ID" 有人可以帮我吗?
这是我的 html 代码:
<asp:GridView ID="gvCustomerOrders" runat="server" Width="940px" HorizontalAlign="Center"
AutoGenerateColumns="false" AllowPaging="True" CssClass="table table-hover table-striped" OnPageIndexChanging="gvCustomerOrders_PageIndexChanging">
<Columns>
<asp:BoundField DataField ="Id" HeaderText ="Id" ItemStyle-Width="100" >
<ItemStyle Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField ="CustomerName" HeaderText ="Name" />
<asp:BoundField DataField ="CustomerPhoneNo" DataFormatString= "{0:(###) ###-####}" HeaderText ="PhoneNo" />
<asp:BoundField DataField ="CustomerEmailID" HeaderText ="Email" />
<asp:BoundField DataField ="Name" HeaderText ="Product" />
<asp:BoundField DataField ="TotalPrice" DataFormatString="{0:C2}" HeaderText ="Price" />
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl ='<%# Eval("Id", "~/Admin/OrderDetails.aspx?Id={0}") %>'
Text="View Details" Target="_blank" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
和后面的代码:
public void bindgrid()
{
SqlConnection conn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True");
SqlCommand cmd = new SqlCommand("select DISTINCT STUFF((SELECT ',' + p.[name] FROM Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id", conn);
SqlDataAdapter da = new SqlDataAdapter("", conn);
da.SelectCommand = new SqlCommand("select DISTINCT STUFF((SELECT ',' + p.[name] FROM Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id", conn);
DataSet ds = new DataSet();
da.Fill(ds, "data");
gvCustomerOrders.DataSource = ds.Tables[0].DefaultView;
gvCustomerOrders.DataBind();
}
我真的迷失了为什么它给我错误
A field or property with the name 'Id' was not found on the selected data source.
您的查询:
select DISTINCT STUFF((SELECT ',' + p.[name] FROM Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id
没有 return 名为 'Id'
但您要在此处绑定 Id
列:
<asp:BoundField DataField ="Id" HeaderText ="Id" ItemStyle-Width="100" >
我猜您只需要在查询中包含来自客户 table 的 'Id' 列:
select DISTINCT Id, STUFF((......
看到你有一个 <asp:BoundField../>
和 DataField ="Id"
并且你正在使用的查询不会获取名称为 "Id
的任何列,如果你获取该列意味着这个错误将得到解决.或者,如果在这种情况下不需要,请从前端删除 BoundField
。
注意:- 您应该在绑定集合中提供所有指定的 DataField
,这意味着您应该通过查询