在DataList中的嵌套了DataGrid在DataGrid中的模板列内有一普通按钮,问如何关联此按钮事件

解决方案 »

  1.   

    目的是要得到DataGridCommandEventArgs事件e
      

  2.   

    bt.Click += new System.EventHandler(Bt_Click);
    bt是按钮的名称,Bt_Click是函数的处理函数,
    声明为private void Bt_Click(object sender, System.EventArgs e)
      

  3.   

    1.手动注册事件
    2.可以考虑用__doPostBack()
      

  4.   

    但不知手动注册事件在那里写我刚测试在DataListItemEventArgs事件里写:
    DataGrid OrderList=e.Item.FindControl("oDgOrder") as DataGrid;
    OrderList.UpdateCommand+=new DataGridCommandEventHandler(DoCancel);不触发函数DoCancel
    在!IsPostBack里,我没有办法找到DataList--->DataGrid--->Button
    直接this.DataList.FindControl("DataList");断点查看为null
    this.DataList.ItemTemplate里没有FindControl方法;PS:VS2003,webForm开发
      

  5.   

    private void DataList1_ItemDataBound(object sender,  System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    string strID = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
    DataSet ds = (DataSet)ViewState["Stat"];
    DataList dl = e.Item.FindControl("DataList2") as DataList;
    dl.ItemDataBound += new DataListItemEventHandler(dl_ItemDataBound);
    ds.Tables[0].DefaultView.RowFilter= "[ea_emq_id]='" + strID + "'";
    dl.DataSource = ds.Tables[0];
    dl.DataKeyField = "bm_id";
    dl.DataBind();
    }
    } private void dl_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    DataList dl1 = (DataList)sender;
    string strID = dl1.DataKeys[e.Item.ItemIndex].ToString();
    DataSet ds = (DataSet)ViewState["Material"];
    DataList dl = e.Item.FindControl("DataList3") as DataList;
    DataRow[] drs = ds.Tables[0].Select("[bm_id]='" + strID + "'");
    dl.DataSource = drs;
    dl.DataBind();
    }
    }