Herro。我有我处理的是一个奇怪的问题涉及到两个按钮,一个HTML(客户端“导出到Excel”)和ASP(服务器端“转到”)按钮:奇怪的__EVENTTARGET行为,可能的错误?
这里对于两个按钮的HTML:
<asp:Button ID="btnGo" runat="server" Text="Go" OnClick="btnGoClick" Width="35px" />
<input id="btnExport" type="button" value="Export to Excel" disabled="disabled" onclick="btnExClick(this)" onmouseover="return doHover(this)" onmouseout="this.style.backgroundColor='';" style="width: 125px" />
基本上用户在下拉选择向下,加载哪些贷款,并单击“开始”,其查询数据库,并将数据网格。当加载数据网格时,“导出到Excel”按钮变为启用状态,并在用户将鼠标悬停和关闭时转为绿色或从绿色变为绿色。单击时,它触发和事件只是调用__doPostBack(btnEx.id, '');
编辑每ShadowWizard的要求:这里是我的btnExClick():
function btnExClick(btn)
{
document.forms[0].target = "_blank"; //newly added line from shadowwizard
__doPostBack(btn.id, '');
}
在我的代码隐藏,我有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
.....
if (Request.Form["__EVENTTARGET"] == "btnExport")
{
this.ExportExcel();
}
}
protected void ExportExcel()
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=Optoma Loaner Report.xls");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
dgResults.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
这一切工作正常,我得到一个很好看的Excel工作表。唯一的问题是我“导出到Excel”后,我的“开始”按钮不再有效。它只是使用__EVENTTARGET still =“btnExport”执行“回发”,因此它会尝试再次导出到Excel。它甚至不会进入其服务器端的onclick事件处理程序!有谁知道为什么会发生这种情况?
我假设它与我将数据网格导出到Excel工作表的方式有关,因为当我注释掉this.ExportExcel();
时,它仍然可以正常工作(尽管“导出到Excel”按钮可以返回到被禁用之后我点击它,我不知道为什么,通常不会那样)。
“虽然‘导出到Excel’按钮返回到被禁用后,我点击它,我不知道为什么呢?它通常不会这样做“我猜这是html控件在回发时回到默认状态的正常行为..所以为了不这样做(比如在取消注释ExportExcel()的时候)会说些什么是错误的... – 2011-03-25 21:03:24
你解决了这个问题,或者你只是切换到使用ASP按钮,而不是输入控制? – IgorShch 2015-02-18 13:18:37