HTML:
<asp:DataList id="DataList1" DataKeyField="id" runat="server">
<ItemTemplate>
<table cellSpacing="0" cellPadding="0" width="100%">
<tr style="PADDING-LEFT: 12px">
<td style="BORDER-TOP-STYLE: inset; BORDER-RIGHT-STYLE: inset; BORDER-LEFT-STYLE: inset; BORDER-BOTTOM-STYLE: inset"
align="center" width="140" bgColor="#edbe7b">&nbsp;</td>
<td style="PADDING-RIGHT: 0px" align="center" bgColor="#ffffcc"><FONT style="BACKGROUND-COLOR: #ffffff" face="宋体"><%# DataBinder.Eval(Container.DataItem, "food_class") %></FONT></td>
</tr>
<tr>
<td height="5" colspan="4" bgcolor="000000"></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList><br>
<table width="100%">
<tr>
<td align="right"><FONT face="宋体">
<asp:ImageButton id="ImageButton1" runat="server" ImageUrl="images/addcart.gif"></asp:ImageButton></FONT></td>
</tr>
</table>----------------------------------------
CODE:public void ImageButton1_Click(Object sender, ImageClickEventArgs e) 
{ int productID = //这里我怎么取到DataList中ID字段的值????!!!!!!!!!!!!! InventoryDB et = new InventoryDB();
DataRow product = et.GetProduct(productID); Market.OrderList shoppingCart = new Market.OrderList(); shoppingCart.Add(new Market.OrderItem(productID, (String) product["food_name"], Double.Parse(product["UnitPrice"].ToString()), 1)); UpdateShoppingCart(); }int productID = //这里我怎么取到DataList中ID字段的值????!!!!!!!!!!!!!

解决方案 »

  1.   

    我觉得是取不的到值的,因为在DataList的事件之外,其他控件的事件是找不到里面的值
    我觉得你可以把在DataList中设一个模板列,把ImageButton放进去,然后在DataList中的事件里面执行你要的代码
      

  2.   

    可以把ID的值放在LABEL里面,然后再遍力找LABEL
      

  3.   

    <asp:datalist id="DataList1" runat="server" DataKeyField="id" showheader="false" showfooter="false"
    OnSelectedIndexChanged="DataList1_Select" borderwidth="0">
    <ItemTemplate>
    <table cellSpacing="0" cellPadding="0" width="100%">
    <tr style="PADDING-LEFT: 12px">
    <td style="BORDER-TOP-STYLE: inset; BORDER-RIGHT-STYLE: inset; BORDER-LEFT-STYLE: inset; BORDER-BOTTOM-STYLE: inset"
    align="center" width="140" bgColor="#edbe7b">&nbsp;</td>
    <td style="PADDING-RIGHT: 0px" width="100" align="center" bgColor="#ffffcc"><FONT style="BACKGROUND-COLOR: #ffffff" face="宋体"><%# DataBinder.Eval(Container.DataItem, "food_class") %></FONT></td>
    </tr>
    <tr>
    <td height="5" colspan="4" bgcolor="000000"></td>
    </tr>
    </table>
    <table width="100%">
    <tr>
    <td align="right"><FONT face="宋体">
    <asp:ImageButton id="ImageButton1" runat="server" ImageUrl="images/addcart.gif" CommandName="select"></asp:ImageButton></FONT></td>
    </tr>
    </table>
    </ItemTemplate>
    <SelectedItemTemplate>
    <table cellSpacing="0" cellPadding="0" width="100%">
    <tr style="PADDING-LEFT: 12px">
    <td style="BORDER-TOP-STYLE: inset; BORDER-RIGHT-STYLE: inset; BORDER-LEFT-STYLE: inset; BORDER-BOTTOM-STYLE: inset"
    align="center" width="140" bgColor="#edbe7b">&nbsp;</td>
    <td style="PADDING-RIGHT: 0px" width="100" align="center" bgColor="#ffffcc"><FONT style="BACKGROUND-COLOR: #ffffff" face="宋体"><%# DataBinder.Eval(Container.DataItem, "food_class") %></FONT></td>
    </tr>
    <tr>
    <td height="5" colspan="4" bgcolor="000000"></td>
    </tr>
    </table>
    <table width="100%">
    <tr>
    <td align="right"><FONT face="宋体">
    <asp:ImageButton id="Imagebutton3" runat="server" ImageUrl="images/addcart.gif" CommandName="select"></asp:ImageButton></FONT></td>
    </tr>
    </table>
    </SelectedItemTemplate>
    </asp:datalist>
    -------------------------------------------------
    CODE:
    public void DataList1_Select(Object sender, EventArgs e) 
    {
    int productID = Int32.Parse(this.DataList1.DataKeys[DataList1.SelectedIndex].ToString()); InventoryDB et = new InventoryDB();
    DataRow product = et.GetProduct(productID); Market.OrderList shoppingCart = new Market.OrderList(); shoppingCart.Add(new Market.OrderItem(productID, (String)product["food_name"], Double.Parse(product["UnitPrice"].ToString()), 1)); UpdateShoppingCart();

    }改成这样呢?怎么得到字段ID的值?
      

  4.   

    不用,直接可以取到.
    在数据绑定的时候,有一个参数如:
    this.myList.DataSource = 数据集
    this.myList.DataKeyField = "xxx_id";//(设定键字段)
    this.myList.DataBind();
    只要你指定了这个参数,那么,你在该控件的事件里面就可以这样:
    int xxx_id = this.myList.DataKeys[e.Items.ItemIndex].toString();
      

  5.   

    string xxx_id = this.myList.DataKeys[e.Items.ItemIndex].toString();