图像按钮在datalist中无法正常工作

问题描述:

我在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); 
     } 
    } 

随着您发布的示例代码,你会更好直接分配按需事件处理程序的按钮。

<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); 
} 

设置的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); 
}