topic_ItemDataBound()
{
ImageButton ib=(ImageButton)e.Item.FindControl("write");
ib.Click +=new ImageClickEventHandler(ib_Click);

}
private void ib_Click(object sender, ImageClickEventArgs e)
{
  ImageButton ib=(ImageButton)sender;
???????????
现在我要使用DataList中ImageButton所在的行绑定的数据,类似((DataRowView)e.item.DataItem).Row["aaa"]........这样的数据,我应该怎么样得到呢??

解决方案 »

  1.   

    要不试试迂回?
    把id绑定到ImageButton的Id上
    然后在Click里面找到DataGrid对应的列?
      

  2.   

    int custId = Convert.ToInt32(this.datalist.DataKeys[e.Item.ItemIndex]);
    取到在数据源中的id其他你就可以自己作了,以下略
      

  3.   

    DataListItem item = (DataListItem)ib.Parent;
    item里面有该行的所有控件,你可以依次取出他们的值!祝好运!
      

  4.   

    why not use ItemCommand?
      

  5.   

    照cuike519的做法是不是应该是(DataListItem)ib.Parent.Parent?
      

  6.   

    this.btnCustomerSave.CommandArgument = custId.ToString();
    ImageButton的CommandArgument绑定ID
    传到另一个方法的时候读出ID
    int custId = e.CommandArgument == null ? 0 : Convert.ToInt32(e.CommandArgument);
      

  7.   

    忘了说,你在创建事件绑定到方法的时候应该写在ItemCreated里面!
      

  8.   

    DataList中是没有Cell的
    可以放一些label 然后从里面取值
      

  9.   

    楼主为何不使用 DataList 的 ItemCommand事件呢?
      

  10.   

    private void ib_Click(object sender, ImageClickEventArgs e)
    {
     ImageButton ib=(ImageButton)sender;
      DataListItem E=(DataListItem)ib.Parent;
    Response.Write (((DataRowView)E.DataItem).Row["topicid"].ToString());//这行错误,未将对象引用到实例
    Response.End();

    } private void topic_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.AlternatingItem || e.Item .ItemType ==ListItemType.Item)
    {
    ImageButton ib=(ImageButton)e.Item.FindControl("write");
    ib.Click +=new ImageClickEventHandler(ib_Click);
    }
       }