我最近不得不重新编译一个人的旧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>
有什么想法吗?
答案 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);
}