在使用DataList的时候发现一个问题,前台代码是:
<asp:DataList ID="DataList1" runat="server" DataKeyField="bookId" DataSourceID="SqlDataSource1" OnItemCommand="DataList1_ItemCommand" Width="109px"> <ItemTemplate> <asp:Image ID="Image1" runat="server" Height="99px" ImageUrl='<%# Eval("cover") %>' Width="85px" /> <br /> 书名: <asp:Label ID="Label2" runat="server" Text='<%# Eval("bookName") %>'></asp:Label> <br /> 价格: <asp:Label ID="Label3" runat="server" Text='<%# Eval("price") %>' /> <br /> <a href="UserView/ShowBook.aspx?bookId=<%# Eval("bookId") %>">图书详情</a> <br /> <asp:Label ID="lblBookID" Visible="False" runat="server" Text='<%# Eval("bookId") %>'></asp:Label> <br /> </ItemTemplate> </asp:DataList>
后台:
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { if (e.Item.ItemType == ListItemType.Item) { LinkButton button = (LinkButton)e.Item.FindControl("btnShowDetail"); Label id = (Label)e.Item.FindControl("lblBookID"); if (button.CommandName == "look") { Session["statu"] = "跳转"; string s_url; s_url = "~/UserView/ShowBook.aspx?bookId=" + id.Text; Response.Redirect(s_url); } } }
然后就发现 前台查询出的第一个和第三个数据可以正常跳转第二个则不可以,然后调试过程中,发现第二个是后台在判断e.Item.ItemType == ListItemType.Item中判断不成立,不知道什么情况,果断换成<a>标签的连接,希望有人可以给个答案。。。