2011-08-19 53 views
1

我在datalist中有一個圖像按鈕來打開一個新頁面來發送郵件,但是當我第一次點擊它時,它不起作用,它點擊第二次,我使用更新面板內datalist。這裏的代碼圖像按鈕在datalist中無法正常工作

<asp:UpdatePanel ID="up1" runat="server"> 
    <ContentTemplate>   
     <asp:ImageButton ID="ImgBtnMail" runat="server" ImageUrl="../../../../Icons/Send-Email.jpg" 
      Width="22" Height="18" CommandName="DoMail" 
      CommandArgument='<%#DataBinder.Eval(((System.Web.UI.WebControls.DataListItem)(Container)).DataItem, "AdID")%>' /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

和後面的代碼:

protected void DLAds_ItemCommand(object source, DataListCommandEventArgs e) 
    { 
     if(e.CommandName=="DoMail") 
     { 
      string TargetPage = "window.open('SendMail.aspx?',null,'height=150, width=150,left=500 ,top=300 ,status= no, resizable= no, scrollbars=no, toolbar=no,location=no,menubar=no ');"; 
      ImageButton MailBtn = (ImageButton)e.Item.FindControl("ImgBtnMail"); 
      MailBtn.Attributes.Add("onclick", TargetPage); 
     } 
    } 

回答

1

隨着您發佈的示例代碼,你會更好直接分配按需事件處理程序的按鈕。

<asp:ImageButton ID="ImageButton1" runat="server" OnCommand="ImageButton1_Command" ...> 

並在代碼:

protected void ImageButton1_Command(object sender, EventArgs e) 
{ 
    string targetPage = "..." 
    ((ImageButton)sender).Attributes.Add("onclick", targetPage); 
} 
0

設置的UpdateMode = 「有條件」 的UpdatePanel的和更新您的UpdatePanel在代碼隱藏象下面這樣:

<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional"> 

protected void ImageButton1_Command(object sender, EventArgs e) 
{ 
    up1.Update(); 
    string targetPage = "..." 
    ((ImageButton)sender).Attributes.Add("onclick", targetPage); 
}