向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;