Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net InvalidOperationException:回发触发器在DataList的ItemTemplate中找不到控件_Asp.net_Asp.net Ajax_Postback - Fatal编程技术网

Asp.net InvalidOperationException:回发触发器在DataList的ItemTemplate中找不到控件

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”的触发器控

我想在点击asp:LinkButton“addToCartButton”时触发回发(见下面的代码)

我已经用asp:UpdatePanel“updPnlProductsList”声明了一个回发触发器(请参见下面的代码)


产品清单
产品说明
有现货的
价格

不幸的是,当我运行此代码时,出现了以下错误:

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

            }
        }