在使用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>标签的连接,希望有人可以给个答案。。。