Ho provato a scaricare un file da sharepoint. Ma dopo aver scaricato questo file, non posso fare clic sugli altri pulsanti. Cosa c'è di sbagliato nella mia codifica?Nessun post successivo dopo il download del file in sharepoint
Questo è il mio primo modo.
Response.AppendHeader("content-disposition", "attachment; filename= " + fileName); Response.ContentType = "text/plain"; Response.WriteFile(Server.MapPath("~/" + fileName)); Response.End();
Questo è il mio secondo modo
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();
Ho anche commentare Response.End(), ma ancora lo stesso risultato.
C'è qualche altro modo che dovrei provare?
Qualsiasi aiuto sarebbe molto apprezzato. In effetti, ho postato questa domanda qualche giorno fa, ma solo una mi ha dato il mio secondo modo di provare ma non funziona ancora.
Grazie.
UPDATE
Ecco il mio GridView sotto 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>
Ecco il mio file cs
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();
}
Ciao, che cosa vuoi dire da voi non possono cliccare su altri pulsanti? Intendi gli altri pulsanti nel browser? –
Sì. Gli altri pulsanti ci sono. Non funzionano dopo questo. – kevin