2011-03-31 177 views
0

我有一个网格,文件名显示为链接按钮。但是当我点击链接按钮时,文件无法打开。请参阅cs文件代码方法来打开文件。文件没有打开

protected void OpenFile(object sender, EventArgs e) 
    { 
     LinkButton btn = (LinkButton)sender; 
     string fileName = btn.Attributes["FileName"].ToString(); 

     string path = Server.MapPath(".") + "\\Files\\" + fileName; 
     if (File.Exists(path)) 
     { 
      Response.AppendHeader("content-disposition", "attachment; filename=" + fileName); 
      string type = "Application/word"; 
      if (type != "") 
       Response.ContentType = type; 
      Response.WriteFile(path); 
      Response.End(); 
     } 
     else 
     { 
     } 

     //System.Diagnostics.Process.Start(@path); 
     //Response.Write(path); 
    } 

这里的GridView的代码:

<asp:GridView ID="gdvMainList" runat="server" CssClass="Grid" 
               AutoGenerateColumns="False" DataSourceID="dtsFilesUploaded" 
               AllowPaging="True" DataKeyNames="Id, FileName" 
               onrowdatabound="gdvMainList_RowDataBound"> 
               <Columns> 
                <ucc:CommandFieldControl HeaderText="Actions" ShowDeleteButton="true" ButtonType="Image" 
                 DeleteImageUrl="~/App_Themes/Default/images/delete.png" ShowEditButton="true" 
                 EditImageUrl="~/App_Themes/Default/images/edit.png" ShowCancelButton="true" CancelImageUrl="~/App_Themes/Default/images/cancel.png" 
                 UpdateImageUrl="~/App_Themes/Default/images/update.png" DeleteConfirmationText="Are you sure you want to delete?"> 
                 <ItemStyle HorizontalAlign="Center" Width="60px" /> 
                 <HeaderStyle HorizontalAlign="Center" /> 
                </ucc:CommandFieldControl> 
                <asp:TemplateField HeaderText="File Name"> 
                 <ItemTemplate> 
                  <asp:LinkButton ID="lblFileName" runat="server" Text='<%# Bind("FileName") %>' OnClick="OpenFile" CausesValidation="false"></asp:LinkButton> 
                 </ItemTemplate> 
                </asp:TemplateField> 
                <asp:TemplateField HeaderText="Uploaded On"> 
                 <ItemTemplate> 
                  <asp:Label ID="lblCreatedDate" runat="server" Text='<%# Bind("CreatedDateTime","{0:d}") %>'></asp:Label> 
                 </ItemTemplate> 
                </asp:TemplateField> 
                <asp:TemplateField HeaderText="Category"> 
                 <ItemTemplate> 
                  <asp:Label ID="lblglCategoryId" runat="server" Text='<%# Bind("glCategoryId") %>'>' ></asp:Label> 
                 </ItemTemplate> 
                 <EditItemTemplate> 
                  <asp:DropDownList ID="ddlglCategoryId" runat="server" CssClass="textEntry2" DataSourceID="dtsglCategoryId" 
                   DataTextField="LookupItem" DataValueField="Id" AppendDataBoundItems="true"> 
                  </asp:DropDownList> 
                 </EditItemTemplate> 
                </asp:TemplateField> 

                <asp:BoundField DataField="Description" HeaderText="Description" ReadOnly="true" /> 
               </Columns> 
               <EmptyDataTemplate> 
                <div class="divEmptyListingGrid"> 
                 --- No Files Exists --- 
                </div> 
               </EmptyDataTemplate> 
              </asp:GridView> 

任何帮助将不胜感激。谢谢 !

+0

你可以试试“字符串路径=” ...行puttin一个断点,看到该变量路径获取正确的文件路径。 – 2011-03-31 07:09:34

+0

究竟是什么问题?你是否遇到异常? OpenFile甚至被执行了吗? – 2011-03-31 07:10:22

+0

@Elad Lachmi:路径具有价值。我检查了它。 @Daniel Hilgarth:没有发生异常。但是我的aspx代码在更新窗格中。这是问题吗? – asma 2011-03-31 07:46:07

回答

1

响应上下文在更新面板中不可用。

另一种可以在这里找到:http://forums.asp.net/p/1030846/1414305.aspx

+0

我能做些什么?请帮助。问题 – asma 2011-03-31 08:30:39

+0

我编辑我的回答 – Anuraj 2011-03-31 08:54:29

+0

谢谢..但我有一个问题。我有一个链接按钮,我想要的一样。 我写了我的aspx文件 但是,这给了我的更新面板中没有这样的控制的例外 请帮我关于这个。我能做什么?????? – asma 2011-03-31 09:52:18