下载文件(图像按钮)选项不工作的UpdatePanel? [英] download file (Image Button ) option is not working in UpdatePanel?

查看:111
本文介绍了下载文件(图像按钮)选项不工作的UpdatePanel?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在GridView中有一个形象按钮来下载文件。我用与updatepanel.If我删除的UpdatePanel的GridView控件的下载选项将工作fine.But我必须使用的UpdatePanel在this.How可以Isolve呢?

 < ASP:的UpdatePanel ID =UpdatePanel2=服务器>
                        <&的ContentTemplate GT;
               < ASP:GridView控件ID =GridImport=服务器的AutoGenerateColumns =假WIDTH =99%HEIGHT =50%
                                    AllowPaging =真正的网格线=无样式=填充:15px的;文本对齐:左;溢出:滚动;
                                    FONT-FAMILY:宋体;字体大小:11磅;ShowHeaderWhenEmpty =真每页=5
                                    的CssClass =Grid_LEHeaderStyle-的CssClass =Grid_HeadEmptyDataText =没有文件导入OnPageIndexChanging =GridImport_PageIndexChanging>
                <柱体和GT;
                    < ASP:BoundField的数据字段=文本的HeaderText =文件名/>
                    < ASP:的TemplateField>
                        <&ItemTemplate中GT;
                              < ASP:ImageButton的ID =lnkDownload=服务器CommandArgument ='<%#的eval(值)%GT;'风格=宽度:20像素,高度:20像素;的ImageUrl =〜/图片/ download.png的OnClick =DownloadFile/> <% - 的CommandName =上传的OnClick =DownloadFile - %GT;
                        < / ItemTemplate中>
                    < / ASP:的TemplateField>
                    < ASP:的TemplateField>
                        <&ItemTemplate中GT;
                              < ASP:ImageButton的ID =lnkDelete=服务器CommandArgument ='<%#的eval(值)%GT;'风格=宽度:20像素,高度:20像素;的ImageUrl =〜/图片/ cancel.png的OnClick =的DeleteFile/>
                        < / ItemTemplate中>
                    < / ASP:的TemplateField>
                < /专栏>
            < / ASP:GridView的>
           < /&的ContentTemplate GT;
                    < / ASP:的UpdatePanel>

的.cs

 保护无效DownloadFile(对象发件人,EventArgs的发送)
        {
            字符串文件路径=(发件人为的ImageButton).CommandArgument;
            Response.ContentType = ContentType的;
            Response.AppendHeader(内容处置,附件;文件名=+ Path.GetFileName(文件路径));
            Response.WriteFile(文件路径);
            到Response.End();
        }
        保护无效的DeleteFile(对象发件人,EventArgs的发送)
        {
            字符串文件路径=(发件人为的ImageButton).CommandArgument;
            File.Delete(文件路径);
            ExprotFileList();
            ClientScript.RegisterStartupScript(的GetType(),瓦尔,ShowExpPopup();,真);
        }


解决方案

在您的code文件:

 保护无效ClickFromUpdate_Click(对象发件人,EventArgs的发送)
{
      字符串文件路径=(发件人为的ImageButton).CommandArgument;
      ScriptManager.RegisterStartupScript(此,this.GetType(),DownloadScript,$(功能(){DownloadFile(+文件路径+);});,真);
}保护无效DownloadFile_Click(对象发件人,EventArgs的发送)
{
     //您的下载code
     VAR文件路径=的Request.Form [__ EVENTARGUMENT];
     Response.ContentType = ContentType的;
     Response.AppendHeader(内容处置,附件;文件名=+ Path.GetFileName(文件路径));
     Response.WriteFile(文件路径);
     到Response.End();
}

在UpdatePanel内的标记文件:

 < ASP:的TemplateField>
    <&ItemTemplate中GT;
        < ASP:ImageButton的ID =lnkDownload=服务器CommandArgument ='<%#的eval(值)%GT;'风格=宽度:20像素,高度:20像素;的ImageUrl =〜/图片/ download.png的OnClick =ClickFromUpdate_Click/>
    < / ItemTemplate中>
< / ASP:的TemplateField>

在您的标记文件添加外的UpdatePanel这个按钮:

 < ASP:按钮的ID =ButtonDownload的OnClick =DownloadFile_Click=服务器/>

的Javascript code:

 函数DownloadFile(文件路径){
            __doPostBack(&下;%= ButtonDownload.UniqueID%gt;中,文件路径);
        }

In gridview There is an image button to download file. I have used the gridview with updatepanel.If I removed Updatepanel the download option will work fine.But i have to use Updatepanel in this.How can Isolve this?

 <asp:UpdatePanel ID="UpdatePanel2" runat="server" >
                        <ContentTemplate>
               <asp:GridView ID="GridImport" runat="server" AutoGenerateColumns="false" Width="99%" Height="50%"
                                    AllowPaging="true" GridLines="None" Style="padding: 15px; text-align: left; overflow: scroll;
                                    font-family: Arial; font-size: 11pt;" ShowHeaderWhenEmpty="true" PageSize="5"
                                    CssClass="Grid_LE" HeaderStyle-CssClass="Grid_Head" EmptyDataText = "No files Imported" OnPageIndexChanging="GridImport_PageIndexChanging">
                <Columns>
                    <asp:BoundField DataField="Text" HeaderText="File Name" />
                    <asp:TemplateField>
                        <ItemTemplate>
                              <asp:ImageButton ID="lnkDownload" runat="server" CommandArgument='<%# Eval("Value") %>'  Style="width: 20px; height: 20px;" ImageUrl="~/Images/download.png" OnClick = "DownloadFile"  />   <%--CommandName="Upload"  OnClick="DownloadFile"--%>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                              <asp:ImageButton ID="lnkDelete" runat="server" CommandArgument='<%# Eval("Value") %>'  Style="width: 20px; height: 20px;" ImageUrl="~/Images/cancel.png" OnClick="DeleteFile" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
           </ContentTemplate>
                    </asp:UpdatePanel> 

.cs

   protected void DownloadFile(object sender, EventArgs e)
        {
            string filePath = (sender as ImageButton).CommandArgument;
            Response.ContentType = ContentType;
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
            Response.WriteFile(filePath);
            Response.End();
        }
        protected void DeleteFile(object sender, EventArgs e)
        {
            string filePath = (sender as ImageButton).CommandArgument;
            File.Delete(filePath);
            ExprotFileList();
            ClientScript.RegisterStartupScript(GetType(), "Val", "ShowExpPopup();", true);
        }

解决方案

In your code file:

protected void ClickFromUpdate_Click(object sender, EventArgs e)
{
      string filePath = (sender as ImageButton).CommandArgument;
      ScriptManager.RegisterStartupScript(this, this.GetType(), "DownloadScript", "$(function() {DownloadFile(" + filePath + ");});", true);
}

protected void DownloadFile_Click(object sender, EventArgs e)
{
     //Your download code
     var filePath = Request.Form["__EVENTARGUMENT"];
     Response.ContentType = ContentType;
     Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
     Response.WriteFile(filePath);
     Response.End();
}

In your markup file inside the updatepanel:

<asp:TemplateField>
    <ItemTemplate>
        <asp:ImageButton ID="lnkDownload" runat="server" CommandArgument='<%# Eval("Value") %>'  Style="width: 20px; height: 20px;" ImageUrl="~/Images/download.png" OnClick = "ClickFromUpdate_Click"  />
    </ItemTemplate>
</asp:TemplateField>

In your markup file add this button outside your updatepanel:

<asp:Button ID="ButtonDownload"  OnClick="DownloadFile_Click" runat="server" />

Javascript code:

function DownloadFile(filepath) {
            __doPostBack("<%= ButtonDownload.UniqueID %>", filepath);
        }

这篇关于下载文件(图像按钮)选项不工作的UpdatePanel?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆