我在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);
}
}
答案 0 :(得分:1)
使用您发布的示例代码,最好将OnCommand事件处理程序直接分配给按钮。
<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);
}
答案 1 :(得分:0)
在UpdatePanel中设置UpdateMode =“Conditional”并在CodeBehind中更新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);
}