使用了母版页,imgBooking按钮在DataList1中:        protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            int iIndex = e.Item.ItemIndex;            AsyncPostBackTrigger Triger = new AsyncPostBackTrigger();
            Triger.ControlID = "ContentPlaceHolder1_DataList1_imgBooking_"+ iIndex;
            Triger.EventName = "Click";
            UpdatePanel2.Triggers.Add(Triger);
        }上面代码错误:
未能为 UpdatePanel“UpdatePanel2”中的触发器找到 ID 为“ContentPlaceHolder1_DataList1_imgBooking_0”的控件。在添加AsyncPostBackTrigger时打开页面查看源代码,imbBooking的ID确实为ContentPlaceHolder1_DataList1_imgBooking_0~N这样的,为什么未能找到呢?经过多次测试,我发现只要用母版页,即使Button不包含在DataList中,直接
<Triggers>
     <asp:AsyncPostBackTrigger ControlID="ContentPlaceHolder1_Button1" EventName="Click" />
</Triggers>
也未能找到ID,不用母版页就可以。请高手指教。

解决方案 »

  1.   

    到当前母版页去FindCotrol("ContentPlaceHolder1_Button1").FindControl("UpdatePanel2")试试
      

  2.   


    为什么到母版页去操作? 难道在母版页中执行
      AsyncPostBackTrigger Triger = new AsyncPostBackTrigger();
       Triger.ControlID = "ContentPlaceHolder1_DataList1_imgBooking_"+ iIndex;
       Triger.EventName = "Click";
       UpdatePanel2.Triggers.Add(Triger);
     这个动作?
      

  3.   

    你填的是客户端ID,ControlID需要服务端ID:
    Triger.ControlID = e.Item.FindControl("imgBooking").UniqueID;
      

  4.   


    这个不会出错了,但是点了按钮还是没反应呀,不执行Click事件。