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>

有什么想法吗?

ASP数据网格未显示所有项目

我认为在绑定之前不应该调用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);
}