如图所示:
1.单击down连接,会弹出下载提示框,然后不管下载提示框做了什么处理后,再单击clear(c#,asp.net服务器控件) 都不会执行后台事件,观察了一下好像是表单不提交, 此处使用的是 linkbutton, 编译后为 __dopostback("link_Attachment","") 没有回发,测试了很多种方法都不行,总之不执行后台。
代码如下:
js下载代码如下:
/// 下载File
function JsDownloadFile(type) {
var fileType = "";
var fileName = "";
var newFileName = "";
if (type == "Attachment") {
fileType = "AdminTenderAttachment";
fileName = document.getElementById('<%= hf_Attachment_Name.ClientID %>').value;
newFileName = document.getElementById('<%= hf_New_Attachment_Name.ClientID %>').value;
}
if (fileType != "" && fileName != "" && newFileName != "") {
window.location.href = "../../Common/DownLoad.aspx?FileType=" + encodeURIComponent(fileType) + "&FileName=" + encodeURIComponent(fileName) + "&NewFileName=" + encodeURIComponent(newFileName) + "&sid=" + Math.random();
}
//return false; /******此处return false 貌似没用*****/
}
第一种方法:
<a href="javascript:void(0)" onclick="JsDownloadFile('Attachment');">
Download</a>
<asp:LinkButton ID="link_Attachment" runat="server" OnClick="link_Attachment_Click">Clear</asp:LinkButton>
protected void link_Attachment_Click(sender e ,EventArgs e)
{
RemoveAttachmentFile("Attachment")
}
第二种方案:因为是linkbtn 不回发的问题,通过另外js触发,后台事件,结果也不行,得到结果,貌似不提交form表单吧,
<a href="javascript:void(0)" onclick="JsDownloadFile('Attachment');">
Download</a>
<a href="javascript:void(0)" onclick="myclick()">Clear</a>
<asp:Button ID="btn_Attachment" runat="server" OnClick ="btn_Attachment_Click" style="display:none/> <script type="text/javascript" language ="javascript">
function myclick()
{
var obj = document.getElementById("btn_Attachment");
obj.click();
}
</script>
大家有知道的,不防请直说, 这个小问题,还真把人整住了。 不会发,不提交后台,就没办法执行后台事件。 同时也想吧这个问题弄清楚,到底怎么回事,我自己在研究,大家可以说说自己的看法。
3. alert(123)都执行了,就是没执行click事件,可见没有提交表单~!
<a href="javascript:void(0)" onclick="JsDownloadFile('Attachment');">
Download</a>
<a href="javascript:void(0)" onclick="myclick()">Clear</a>
<asp:Button ID="btn_Attachment" runat="server" OnClick ="btn_Attachment_Click" style="display:none/> <script type="text/javascript" language ="javascript">
function myclick()
{
var obj = document.getElementById("btn_Attachment");
obj.click();
alert(123) /*******************************************/
}
</script>
怎么会呢,JsDownloadFile是怎么写的
发布了js下载代码,是通过访问我的公用下载页面下载的。
jsdownloadfile跳转到新的页面了啊。新页面里面clear事件定义了?
clear ,方案一用的是linkbutton 啊,link_Attachment_Click 下面有后台代码,
方案二用的是 《a》 连接,单击触发js ,通过js触发后台 myclick=obj.click(),也没执行, 后台都是同一个事件的。
clear ,方案一用的是linkbutton 啊,link_Attachment_Click 下面有后台代码,
方案二用的是 《a》 连接,单击触发js ,通过js触发后台 myclick=obj.click(),也没执行, 后台都是同一个事件的。
clear 没在跳转页面里,在当前页面执行的~! download会跳转到我公用的下载页面,clear会在当前页面执行清楚的,当前页后台有代码的。
通过火狐浏览器的步步检测和调试,最终发现, response.writeFile() 输出的文件,如果有框架的话,一定要用父框架捕捉,
window.partentlocation.href = "";
window.partent.location.href = "";