不是这个事件
你DataList中的Button的事件是通过ItemDataBind这个事件用FindControl找到的,而不是事先注册的,明白么?ItemDataBind这个事件里面,用e.Item.ItemIndex拿到行的索引
然后e.Item.FindControl(ID)去找到相应的控件
就可以了

解决方案 »

  1.   

    楼上正解
    Button btn = ((Button)(this.DataList.Item[e.Item.ItemIndex].FindControl("Button1")));
      

  2.   

    那就算查到了..就比如说..这个新的Button的ID为btn
    那么它的单击事件怎么写??
      

  3.   


    在DataList的ItemDataBind里面
    Button btn = ((Button)(this.DataList.Item[e.Item.ItemIndex].FindControl("Button1")));
    btn.Attributes.Add("onclick", "btn_Click()");在外面写方法
    protected void btn_Click(object sender, EventArgs e)
    {
         //在这里实现方法
    }
      

  4.   

    我记得btn.Attributres.add("onclick","btn_click()");
    是调用的javascript的方法吧?。学习中。
      

  5.   

    编译器错误消息: CS1061: “System.Web.UI.WebControls.DataList”不包含“Item”的定义,并且找不到可接受类型为“System.Web.UI.WebControls.DataList”的第一个参数的扩展方法“Item”(是否缺少 using 指令或程序集引用?)
    出现错误了..
      

  6.   

    是DataList的ItemDataBInd事件
    在这个事件里面
    用e.Item.ItemIndex去判断索引
      

  7.   

      protected void Default_Top_RightContDataL_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            Button btn =((Button)(this.Default_Top_CenterContDataL.Item[e.Item.ItemIndex].FindControl("ButTouP")));
            btn.Attributes.Add("onclick", "btn_Click()");
        }
        protected void btn_Click(object sender, EventArgs e)
        {
            Response.Write("试试!");
        }对啊..就这样子的啊...
    编译器错误消息: CS1061: “System.Web.UI.WebControls.DataList”不包含“Item”的定义,并且找不到可接受类型为“System.Web.UI.WebControls.DataList”的第一个参数的扩展方法“Item”(是否缺少 using 指令或程序集引用?)
     Button btn =((Button)(this.Default_Top_CenterContDataL.Item[e.Item.ItemIndex].FindControl("ButTouP")));

    上面这一行提示出错...我的是(.NET Framework 3.5)的..
      

  8.   

    不是那么做
    在ItemDataBind事件中为btn添加Command响应事件
    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {     Button mybtn = e.Item.FindControl("btn") as Button;
         mybtn.CommandName = "myclick";
         mybtn.CommandArgument = e.Item.ItemIndex.ToString();     
    }点击Datalist添加一个ItemCommand事件protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
            if (e.CommandName == "myclick")
            {
                (DataList1.Items[e.Item.ItemIndex].FindControl("Label1") as Label).Text = 
    (DataList1.Items [e.Item.ItemIndex].FindControl("DropDownList1") as DropDownList).SelectedItem.Text;        }
    }
      

  9.   

    参考现形的:http://blog.csdn.net/insus/archive/2008/02/27/2123970.aspx
      

  10.   

    11楼的方法....
    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
    mybtn.CommandName = "myclick";报错...protected void Default_Top_RightContDataL_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            Button mybtn = e.Item.FindControl("TouP") as Button;
            mybtn.CommandName = "myclick";
            mybtn.CommandArgument = e.Item.ItemIndex.ToString();      
        }
        protected void Default_Top_RightContDataL_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "myclick")
            {
                (Default_Top_RightContDataL.Items[e.Item.ItemIndex].FindControl("Label1") as Label).Text = (Default_Top_RightContDataL.Items[e.Item.ItemIndex].FindControl("DropDownList1") as DropDownList).SelectedItem.Text;
            }
        }
      

  11.   

    在Framework2.0中我试过是可以的,3.5的话我就不清楚了.....
    期待中......
      

  12.   

    楼主绑定DataList时确保没有问题吗,再试试吧,
    我想2.0和3.5区别不应该太大吧
      

  13.   

    绑定时应该没有问题..数据显示都正常.....
    我想过了...我想要的目的没有那么复杂了..可以简化实现..只要一个Button..不用laebl和DropDownList了.
    当点击Button点击后.....Datalist就重新执行一次绑定数据..并显示出来....就像Delete按钮删除一条新闻后..上面的新闻列表就自动刷新一下..进行重新排序那种效果...
      

  14.   

    Buttion btn = (Buttion)Sender;
    DataItemList item= (DataItemList)btn.Parent;
    Label lbl = item.FindControl("label1");
    DropDownList ddl = item.FindControl("DropDownList1");
    lbl.Text = ddl.SelectedItem.text;以上代码写到按钮事情中 就能实现你想要的效果。