我正在为我的ASP.NET Web应用程序中的GridView
和数据绑定动态创建模板。我添加了标题栏模板以及一列按钮。我遇到的麻烦是布线按钮的点击事件似乎从未触发。我尝试过以多种方式抓取按钮(在DataBind()
方法之后),但是单击按钮时似乎没有任何东西被触发。无法在GridView中为动态创建的按钮建立Click事件
注意:该GridView
是ASP:UpdatePanel
和AJAX手风琴窗格(ToolkitScriptManager上的Site.Master)内。
这里的aspx页面(简体)的相关部分...
<ajaxToolkit:AccordionPane ID="accordionSelfRegisteredUsers" runat="server">
<Header>Find All Self-Registered Users</Header>
<Content>
<asp:UpdatePanel ID="updatepnlSelfRegisteredUsers" runat="server">
<ContentTemplate>
<div id="divFixedHeaderSelfRegisteredUsers"></div>
<div id="divSelfRegisteredUsers">
<asp:GridView ID="gridviewSelfRegisteredUsers" runat="server"
AutoGenerateColumns="False" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</Content>
</ajaxToolkit:AccordionPane>
这里是页的C#代码。
的一种方式......
List<Button> gvConfirmButtons = new List<Button>();
foreach (GridViewRow row in gridviewSelfRegisteredUsers.Rows)
{
foreach (Control c in row.Controls)
{
if (typeof(DataControlFieldCell) != c.GetType())
{
continue;
}
foreach (Control cf in c.Controls)
{
if (typeof(Button) == cf.GetType())
{
gvConfirmButtons.Add((Button)cf);
}
}
}
}
foreach (Button b in gvConfirmButtons)
{
b.Click += new EventHandler(btnGVSRUConfirm_Click);
}
而另一个我想...
foreach (GridViewRow row in gridviewSelfRegisteredUsers.Rows)
{
foreach (Control c in row.Controls)
{
if (typeof(DataControlFieldCell) != c.GetType())
{
continue;
}
for (int i = 0; i < gridviewSelfRegisteredUsers.Rows.Count; i++)
{
//find buttons by client ID
Button b = (Button)c.FindControl(
"contentMain_gridviewSelfRegisteredUsers_btnConfirm_" + i);
b.Click += new EventHandler(btnGVSRUConfirm_Click);
}
}
}
按钮被发现,我可以访问它们,但是从按钮的Click事件永远不会触发单击事件方法我有代码。
private void btnGVSRUConfirm_Click(object sender, EventArgs e)
{
}
任何想法,我怎么可能会搞砸了吗?我有一种感觉,它与页面生命周期中当前按钮被用户点击时的gridview状态有关,但不知道如何继续。
何时/何处在页面生命周期中,您是否运行附加处理程序的代码? – Andrei 2014-10-31 16:17:04
我在这个页面上有一个导航菜单,所以当用户单击该导航按钮查看有关该内容的所有内容时,都会发生。 – 2014-11-03 12:59:10
我尝试添加两个.Attributes [“onclick”]和.OnClientClick将按钮指向一个JavaScript方法,并且工作。我只是无法使用.Click在C#中使用服务器端方法。任何想法或疑难解答步骤尝试将不胜感激。谢谢! – 2014-11-05 19:50:18