2009-10-14 159 views
1

我在我的頁面上有一個搜索按鈕,在數據庫上運行查詢,拉出並在表格中顯示一些條目,併爲每個條目創建一個按鈕。它看起來是這樣的:asp.net - 按鈕事件不會觸發

List<Friend> friends = SearchFriend(searchStr); 
foreach (Friend f in friends) 
{ 
    TableCell addCell = new TableCell(), nameCell = new TableCell(); 

    addCell.Text = ""; 
    if (!f.IsMyFriend) 
    { 
      LinkButton addFriendBtn = new LinkButton(); 
      addFriendBtn.Text = "Add as Friend"; 
      addFriendBtn.Click += new EventHandler(addFriendBtn_Click); 
      addFriendBtn.ID = "add_" + f.ID.ToString(); 

      addCell.Controls.Add(addFriendBtn); 
    } 
    nameCell.Text = f.Name; 

    TableRow row = new TableRow(); 
    row.Cells.Add(addCell); 
    row.Cells.Add(nameCell); 

    SearchFriendTable.Rows.Add(row); 
} 

問題是,當按下它LinkBut​​ton的事件不會觸發(改變的LinkBut​​ton以一個簡單的按鈕沒有任何解決這個問題)。

這是我在這部分取得HTML:

<td><a id="ctl00_contentPH_add_2" href="javascript:__doPostBack('ctl00$contentPH$add_2','')">Add as Friend</a></td> 

而且 - 當我把一個斷點的Page_Load我看到它這個控件的ID的__EVENTTARGET - 但事件從未開始運行。

任何線索? 謝謝。

+0

顯示你的頁面加載代碼,請。 – Restuta 2009-10-14 10:57:00

+0

它是空的:-O。 保護無效頁\ _Load(對象發件人,EventArgs的){ } – emk 2009-10-14 12:02:05

回答

1

你在哪裏和什麼時候創建了該按鈕?

如果您動態創建按鈕並且想要聆聽事件,則必須在PageInit事件中創建該按鈕。總是!所以不要使用if(!IsPostback)

+0

你說得對 - 我不是創建頁\ _Load內,而是裏面的另一個事件的按鈕。那我該如何解決呢?我不明白你的答案中的「if(!IsPostBack)」部分... – emk 2009-10-14 11:49:37

+0

你必須在Page_Init事件中創建按鈕。 With!IsPostback我的意思是你必須重新創建每個請求的按鈕。通常你只需要初始化一次網格或類似的一次 - 用!IsPostback檢查 – Arthur 2009-10-14 12:05:17

1

試試這個。

<td><a id="ctl00_contentPH_add_2" href="javascript:__doPostBack('<%=ct100_contentPH_add_2.ClientId %>','')">Add as Friend</a></td> 
0

添加事件處理程序的鏈接按鈕和處理這些事件。

if (!f.IsMyFriend) 
    { 
      LinkButton addFriendBtn = new LinkButton(); 
      addFriendBtn.Text = "Add as Friend"; 
      addFriendBtn.Click += new EventHandler(addFriendBtn_Click); 
      addFriendBtn.ID = "add_" + f.ID.ToString(); 
      addFriendBtn.Click += new EventHandler(addFriendBtn_Click); 
      addCell.Controls.Add(addFriendBtn); 
    } 

事件:

protected void addFriendBtn_Click(object sender, EventArgs e) 
     { 
      LinkButton lnk = (LinkButton)sender; 
      // do your coding 
    } 
+0

我有一個事件處理程序,當然是:)。問題在於它內部的代碼從未開始運行。 – emk 2009-10-14 11:47:54