我正在动态构建“图像”按钮并将其放置在ASP占位符内。用户单击图像(按钮)时,应使用学校的信息更新面板。第一次单击按钮时,面板会正确更新,但是当我单击另一个按钮时,它将导致回发。在第二,第三等位置上,它应该更新面板而没有回发信息。
构建按钮时,我还创建触发器并将控件ID设置为按钮的ID。我已经调试并验证了这些触发器是否已正确创建。
按钮和触发器创建
int counter = 0;
foreach (DataRow row in tempTable.Rows)
{
var button = new ImageButton
{
ID = counter.ToString(),
CausesValidation = false
//OnClientClick= "return false;"
};
button.Command += new CommandEventHandler(buildSchoolInfo); //The onclick event that builds the school info
button.CommandName = "ImageButton" + counter.ToString();
button.CommandArgument = "Test" + counter.ToString();
SchoolListPH.Controls.Add(button); //Add image button to placeholder
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = button.ID;
//trigger.EventName = "Click";
schoolInfoUP.Triggers.Add(trigger); //Adding the trigger to the Update Panel
counter++;
}
ASPX代码
<div style="border: 1px solid black">
<asp:PlaceHolder ID="SchoolListPH" runat="server"></asp:PlaceHolder>
</div>
<%-- This is the literal that builds with all of the selected schools information --%>
<asp:UpdatePanel ID="schoolInfoUP" runat="server" >
<ContentTemplate>
<asp:Literal ID="litTable" runat="server"></asp:Literal>
</ContentTemplate>
</asp:UpdatePanel>
答案 0 :(得分:0)
在互联网上搜索了wayyyy后,很长的一行就为我解决了这一问题。
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(button);
在将触发器添加到更新面板之后,我立即放置了它。