gpt4 book ai didi

c# - 奇怪的 __EVENTTARGET 行为,可能是错误?

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:53 25 4
gpt4 key购买 nike

希罗。我有一个奇怪的问题,我正在处理它涉及两个按钮,一个 HTML(客户端“导出到 Excel”)和一个 ASP(服务器端“Go”)按钮:

enter image description here

这是两个按钮的 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”按钮在我单击后又恢复为禁用状态,但我不确定为什么。它通常不会这样做)。

最佳答案

我确实遇到了这个问题。

解决方法是在 btnGo 按钮上设置 UseSubmitBehavior="false"

UseSubmitBehavior="false" 使按钮使用 .NET 的回发方法,该方法会在按钮打开时将 __EVENTTARGET 设置为“btnGo”点击。如果没有它,该按钮将使用浏览器的默认提交按钮方法,这会使 __EVENTTARGET 保持不变,因此会重新提交“btnExport”的先前值。

关于c# - 奇怪的 __EVENTTARGET 行为,可能是错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com