Asp.net InvalidOperationException:回发触发器在DataList的ItemTemplate中找不到控件
我想在点击asp:LinkButton“addToCartButton”时触发回发(见下面的代码) 我已经用asp:UpdatePanel“updPnlProductsList”声明了一个回发触发器(请参见下面的代码)Asp.net InvalidOperationException:回发触发器在DataList的ItemTemplate中找不到控件,asp.net,asp.net-ajax,postback,Asp.net,Asp.net Ajax,Postback,我想在点击asp:LinkButton“addToCartButton”时触发回发(见下面的代码) 我已经用asp:UpdatePanel“updPnlProductsList”声明了一个回发触发器(请参见下面的代码) 产品清单 产品说明 有现货的 价格 不幸的是,当我运行此代码时,出现了以下错误: InvalidOperationException:在UpdatePanel“updPnlProductsList”中找不到ID为“addToCartButton”的触发器控
产品清单
产品说明
有现货的
价格
不幸的是,当我运行此代码时,出现了以下错误:
InvalidOperationException:在UpdatePanel“updPnlProductsList”中找不到ID为“addToCartButton”的触发器控件
请有人帮我引用数据列表的ItemTemplate中的“addToCartButton”
或者我可以在asp:LinkButton代码中引起回发?我正在用C#编码
问候
Walter编辑2:建议的第一个解决方案无法工作。按照建议尝试以下内容(源自您已经尝试过的内容): 在服务器端事件OnRowDataBound()上添加控件。此时,您将向触发器列表添加正确的id Edit1:这就是我的想法。我没有测试它
protected void gv_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType = DataControlRowType.DataRow)
{
// TODO: Find control within the row.
Control control = null;
var trigger = new AsyncPostBackTrigger();
trigger.ControlID = control.ID;
updPnlProductsList.Triggers.Add(trigger);
}
}
感谢joerage的快速回复。你能举例说明我是怎么做到的吗?嗨,乔瑞奇。我尝试将此添加到我的代码隐藏:protected void productsList_ItemDataBound(对象发送者,DataListItemEventArgs e){//处理productsList的onItemDataBound事件。if(e.Item.ItemType==ListItemType.Item | | e.Item.ItemType==ListItemType.AlternatingItem){ScriptManager ScriptManager=ScriptManager.GetCurrent(this.Page);ScriptManager.RegisterPostBackControl(e.Item.FindControl(“addToCartButton”);}它不工作。同样的错误。Hi joerage。我尝试了以下方法:受保护的无效产品列表\u ItemDataBound(对象发送方,DataListItemEventArgs e){//处理productsList.if(e.Item.ItemType==ListItemType.Item | | e.Item.ItemType==ListItemType.AlternatingItem){Control=null;Control=e.Item.FindControl(“addToCartButton”);PostBackTrigger=new PostBackTrigger();trigger.ControlID=control.ID;updPnlProductsList.Triggers.Add(trigger);}但它失败了,出现了相同的错误。好的,不确定…尝试使用control.ClientID而不是control.idThank joerage。尝试了ClientID并得到了类似的错误:在UpdatePanel“updPnlProductsList”中找不到ID为“ctl00\u cPH\u ctrlProductsList\u productsList\u ctl01\u addToCartButton”的控件。
productsList_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(e.Item.FindControl("addToCartButton"));
// Add this update call.
updPnlProductsList.Update();
}
}
protected void gv_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType = DataControlRowType.DataRow)
{
// TODO: Find control within the row.
Control control = null;
var trigger = new AsyncPostBackTrigger();
trigger.ControlID = control.ID;
updPnlProductsList.Triggers.Add(trigger);
}
}