ASP数据网格未显示所有项目
本文关键字:项目 显示 数据 数据网 网格 ASP | 更新日期: 2023-09-27 18:20:55
我最近不得不重新编译某人的旧C#/ASP/.Net网站(文件显示它是9年前启动的),以便对网站进行更改。这是与原始站点位于同一服务器上的开发副本。
我无法让数据网格显示订单确认页面上的所有项目。我确信正确的数据被提供给了数据网格(因为我在数据绑定之前已经把它打印出来了,但它只显示了三个项目中的两个。不过代码在旧的编译中有效!
这是.aspx.cs文件中的c#代码:
SqlDataReader basketReader = User.GetBasket(User.GetUserID(Page.User.Identity.Name));
if (basketReader.Read())
{
orderDG.DataKeyField = "ItemCode";
orderDG.DataSource = basketReader;
orderDG.DataBind();
basketReader.Close();
}
else
{
Response.Redirect("~/Orders.aspx", false);
}
以下是.aspx文件中的数据网格代码:
<asp:datagrid id="orderDG" runat="server" width="100%" autogeneratecolumns="False" GridLines="none">
<headerstyle CssClass="dataHeading"></headerstyle>
<itemstyle CssClass="dataTxt"></itemstyle>
<AlternatingItemStyle BackColor="#F9F9FF" />
<columns>
<asp:boundcolumn datafield="ItemCode" headertext="Item Code"></asp:boundcolumn>
<asp:boundcolumn datafield="Description" headertext="Description"></asp:boundcolumn>
<asp:boundcolumn datafield="Quantity" headertext="Quantity"></asp:boundcolumn>
</columns>
</asp:datagrid>
有什么想法吗?
我认为在绑定之前不应该调用basketReader.Read()。尝试使用这个替代:
SqlDataReader basketReader = User.GetBasket(User.GetUserID(Page.User.Identity.Name));
if (basketReader.HasRows)
{
orderDG.DataKeyField = "ItemCode";
orderDG.DataSource = basketReader;
orderDG.DataBind();
basketReader.Close();
}
else
{
Response.Redirect("~/Orders.aspx", false);
}