我用C# asp.net2.0 我用datalist控件来显示不同商家的信息,当我单击某个商家imagebutton,想得到它的商家名,然后在另外一页显示更俱体的信息. 好多网友给我回复都不大行:
<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("yourField") %>'></asp:Label> <asp:ImageButton ID="ImageButton1" runat="server" CommandName="XXX"/> </ItemTemplate> </asp:DataList> protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { if (e.CommandName == "XXX") { Response.Write((e.Item.FindControl("Label1") as Label).Text); } }
想得到它的商家名,然后在另外一页显示更俱体的信息. --------------------------------------- 商家肯定有唯一ID吧,如果你想面通过商家ID来显示具体信息,那么还有个办法就是: <asp:DataList ID="DataList1" runat="server" DataKeyField="商家ID" DataSourceID="SqlDataSource1" onitemcommand="DataList1_ItemCommand"> 后台代码中DataList1.SelectedValue返回的就是商家ID,你可以通这个再进行进一步操作。
加上CommandArgument=' <%# Eval("商家ID") %>' 然后在ItemCommand里Convert.ToInt32(e.CommmandArgument)来取得商家ID。
最后本人用下面这方法,成功:
<asp:ImageButton ID="Imgbt1" runat="server" Height="70px" ImageUrl=' <%# DataBinder.Eval(Container.DataItem,"shoppiture","Images/{0}") %>' Width="82px" CommandArgument=' <%# DataBinder.Eval(Container.DataItem,"shopname") %>' PostBackUrl=' <%# "~/Shopmanage/ShopShow.aspx?shopname="+DataBinder.Eval(Container.DataItem,"shopname") %>' /> </td> <td style="width: 85px; height: 24px">