首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

向UpdatePanel的Trigger动态添加AsyncPostBackTrigger.该如何处理

2012-04-08 
向UpdatePanel的Trigger动态添加AsyncPostBackTrigger.使用了母版页,imgBooking按钮在DataList1中:protect

向UpdatePanel的Trigger动态添加AsyncPostBackTrigger.
使用了母版页,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,不用母版页就可以。

请高手指教。

[解决办法]
到当前母版页去FindCotrol("ContentPlaceHolder1_Button1").FindControl("UpdatePanel2")试试
[解决办法]
你填的是客户端ID,ControlID需要服务端ID:
Triger.ControlID = e.Item.FindControl("imgBooking").UniqueID;

热点排行