这样应该也行的:
第一列为普通绑定列
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True" HeaderText="记录ID">
</asp:BoundColumn>DataList1_ItemCommand()
{
if(e.CommandName=="image")    //imagebutton的commandname
{  
string gid=e.Item.Cells[0].Text.Trim();
this.Response.Redirect("goodshow.aspx?gid="+ gid);
}
}

解决方案 »

  1.   

    <asp:BoundColumn Visible="False" DataField="gid" ReadOnly="True" HeaderText="记录ID">
    </asp:BoundColumn>
      

  2.   

    谢谢两位大大的回复。
    首先,我用的是.net2003,里边<asp:BoundColumn>好像没有。而且e.Item下边没有cells集合
    两位的意思我大致明白了,加入一个隐藏列起到记录主键的作用,好办法。我会按两位的思路继续尝试的。
    但我想就这个问题作一下扩展。如果我以后再遇到类似问题,即当我点击一个datalist上某个item上的一个按钮后,想返回同一个item上的其他控件的信息,如一些label的Text,而这些label又事先绑定了,那我就没有办法直接获得它们的Text吗,只能通过先找主键,再到库里查吗??
    谢谢