sharepointからファイルをダウンロードしようとしました。 しかし、このファイルをダウンロードした後、他のボタンをクリックすることはできません。 私のコーディングで何が問題になっていますか?共有ポイントでファイルをダウンロードした後にポストバックがありません
これが私の最初の方法です。
Response.AppendHeader("content-disposition", "attachment; filename= " + fileName); Response.ContentType = "text/plain"; Response.WriteFile(Server.MapPath("~/" + fileName)); Response.End();
これは私の第二の方法byte[] bytes = System.IO.File.ReadAllBytes("D:\\" + fileName); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Type", "application/octet-stream"); Response.AddHeader("Content-Length", bytes.Length.ToString()); Response.AddHeader("content-disposition", "attachment; filename= " + fileName); Response.BinaryWrite(bytes); Response.Flush(); Response.End();
私もResponse.Endの()が、それでも同じ結果をコメントしています。
私は試してみるべき他の方法はありますか?
本当にありがとうございます。 実際、私は数日前にこの質問を掲載しましたが、1つだけが私に2番目の方法を教えてくれましたが、まだ動作していません。
ありがとうございました。ここで
UPDATE
は、GridViewコントロールの下で私のGridViewのです。ここで
<asp:GridView ID="gvGiro" Width="100%" runat="server" GridLines="Both" AllowPaging="false" CssClass="form-table" ShowHeader="false" AllowSorting="false" AutoGenerateColumns="false" OnRowDataBound="gvGiro_RowDataBound"> <Columns> <asp:TemplateField ItemStyle-Width="20%" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValueDate" Text='<%# getDate(Eval("ValueDate")) %>' runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:GridView ID="gvDetail" runat="server" AllowPaging="false" AllowSorting="false" CssClass="list-table border" HeaderStyle-CssClass="header" AutoGenerateColumns="false"> <Columns> <asp:TemplateField HeaderText="Sequence Number" ItemStyle-HorizontalAlign="Left" ItemStyle-Width="30%" > <ItemTemplate> <%#((DataRowView)Container.DataItem)["MessageSeqNbr"] %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Total Number of Debit Transaction" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Center"> <ItemTemplate> <%#((DataRowView)Container.DataItem)["TotalDebitNbr"] %> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Status" ItemStyle-HorizontalAlign="Left" ItemStyle-Width="25%" HeaderStyle-HorizontalAlign="Center"> <ItemTemplate> <%#((DataRowView)Container.DataItem)["CodeDesc"] %> <asp:HiddenField ID="hidCode" runat="server" Value='<%#((DataRowView)Container.DataItem)["Code"] %>' /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Action" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="10%" HeaderStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Button ID="btnDownload" runat="server" CssClass="button submit" Text="Download" CommandName="download" OnCommand="onCmd" CommandArgument='<%#Eval("Id") %>' Width="80px"/> <asp:Button ID="btnUnbatch" runat="server" CssClass="button generic" Text="Un-Batch" CommandName="unbatch" OnCommand="onCmd" CommandArgument='<%#Eval("Id") %>' Width="80px"/> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
は、私のCSファイルには、SharePointは、ハンドラ "を提出の上、" JavaScriptを登録する
protected void gvGiro_RowDataBound(object sender, GridViewRowEventArgs e) { GridView gr; if (e.Row.RowType == DataControlRowType.DataRow) { gr = (GridView) e.Row.FindControl("gvDetail"); using (class2 ct2= new Class2()) { Label lblValueDate = (Label)e.Row.FindControl("lblValueDate"); DateTime dt= DateTime.MinValue; DataSet ds= ct2.GetData(dt); gr.DataSource = ds; gr.DataBind(); } } } protected void onCmd(object sender, CommandEventArgs e) { string id; switch (e.CommandName) { case "unbatch": id= e.CommandArgument.ToString(); Unbatch(id); break; case"download": id= e.CommandArgument.ToString(); Download(id); break; default: break; } } protected void Download(string id) { // to do - substitute all hard-code guid Guid batchId = new Guid(id); string fileName = ""; Class1 ct = new Class1(); { if (!ct.FileExists(batchId , ref fileName)) { byte[] bytes = System.IO.File.ReadAllBytes("D:\\" + fileName); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Type", "application/octet-stream"); Response.AddHeader("Content-Length", bytes.Length.ToString()); Response.AddHeader("content-disposition", "attachment; filename= " + fileName); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); }
あなたが他のボタンをクリックすることができないことでこんにちは、あなたは何を意味するのですか?あなたはブラウザの他のボタンを意味しますか? –
はい。他のボタンはそこにあります。これ以降は動作しません。 – kevin