目前采取曲线救国策略:
利用MVC .....
<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" KeyFieldName="FriendLinkID" Theme="Default" EnableTheming="True"> <Columns> <dx:GridViewDataTextColumn FieldName="FriendLinkID" ReadOnly="True" VisibleIndex="0"> <EditFormSettings Visible="False" /> </dx:GridViewDataTextColumn> <dx:GridViewDataTextColumn FieldName="LinkName" VisibleIndex="1"> </dx:GridViewDataTextColumn> <dx:GridViewDataTextColumn FieldName="LinkSrc" VisibleIndex="2"> </dx:GridViewDataTextColumn> <dx:GridViewDataTextColumn FieldName="Contact" VisibleIndex="3"> </dx:GridViewDataTextColumn> <dx:GridViewDataDateColumn FieldName="PublishData" VisibleIndex="4"> </dx:GridViewDataDateColumn> </Columns> </dx:ASPxGridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Pengbg_DataConnectionString %>" SelectCommand="SELECT * FROM [Friendlink]"></asp:SqlDataSource> <dx:ASPxGridViewExporter ID="ASPxGridViewExporter1" GridViewID="ASPxGridView1" runat="server"></dx:ASPxGridViewExporter> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e) { var fileName = new Random().Next().ToString(); var fullPath = @"C:" + fileName + ".xls"; using (var fs = new FileStream(fullPath, FileMode.CreateNew, FileAccess.Write)) { ASPxGridViewExporter1.WriteXls(fs); } Response.Redirect("Default1?path=" + fullPath); }
public class Default1Controller : Controller { // // GET: /Default1/ public ActionResult Index(string path) { String newfileName = DateTime.Now.ToString("yyyyMMddHHmmssff"); return File(System.IO.File.ReadAllBytes(path), "application/vnd.ms-excel", HttpUtility.UrlEncode(string.Format("{0}.xls", newfileName))); } }
原理在推测、调试中。。。