我正在爲我的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