ASP datagrid不显示所有项目

时间:2015-11-07 17:26:28

标签: c# asp.net data-binding datagrid

我最近不得不重新编译一个人的旧C#/ ASP / .Net网站(文件表明它是在9年前开始的),以便在网站上进行更改。这是与原始站点在同一服务器上的开发副本。

我无法让datagrid显示订单确认页面上的所有商品。我确信正在向datagrid提供正确的数据(因为我在数据绑定之前将其打印出来,但它只显示了三个项目中的2个。但代码可以在旧的编译中使用!

这是c#代码:在.aspx.cs文件中:

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>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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