我有一个需求来创建一个HTML表格并将其作为电子表格发送给用户。我在普通的旧ASP.NET中做了很多次,但是它在SharePoint中踢我的背后。它是一个带有事件处理程序的简单按钮,它调用存储在模块中的3个文件(可通过沙盒解决方案访问),然后尝试将文本推送给用户以及适当的内容类型和内容处置。当我得到这部分工作时,SampleData.txt部分将被来自多个列表的数据替换。不幸的是,该页面是回发,但没有文件提供给用户打开或下载。如何从沙盒解决方案获取Response.Write?
我读过几个地方的Response.Write在Web部件中不可用,但肯定还有其他一些方法来完成这个任务...?这就是我想要做的 - 有没有可用的替代方案?
protected override void CreateChildControls()
{
Button ReportButton = new Button();
ReportButton.Text = "Generate DCPDS Report";
ReportButton.Click += new EventHandler(ReportButton_Click);
this.Controls.Add(ReportButton);
}
protected void ReportButton_Click(Object sender, EventArgs e)
{
string header = "";
string sampleData = "";
string footer = "";
using (SPWeb webRoot = SPContext.Current.Site.RootWeb)
{
header = webRoot.GetFileAsString("SpreadsheetParts/Header.txt");
sampleData = webRoot.GetFileAsString("SpreadsheetParts/SampleData.txt");
footer = webRoot.GetFileAsString("SpreadsheetParts/Footer.txt");
}
StringBuilder sb = new StringBuilder();
sb.Append(header);
sb.Append(sampleData);
sb.Append(footer);
Page.Response.Clear();
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=June2010Spreadsheet.xls");
HttpContext.Current.Response.Write(sb.ToString());
//HttpContext.Current.Response.End();
}
我正在它的页面 - 这似乎是一个有用的想法,但的RegisterStartupScript没有工作,也没有内嵌的ClientID。我已经修改了的javascript如下: $(文件)。就绪(函数(){ \t变种练成=的document.getElementById( 'ctl00_m_g_522f74a4_8de0_4319_b8d2_6e40e4e63600_hfExcelData'); \t如果(EXCEL && excel.value.length> 0) {encodeURIComponent(excel.value); \t} }); 到目前为止,它不工作,但我还没有通过!只是想让你知道我没有理睬你。谢谢! – Charlie
Midlothian,呃?我们几乎都是兄弟。我住在斯塔福德县。 – Charlie
小世界!我很惊讶,内联ClientID不起作用,更令人惊讶的是,RegisterStarupScript不起作用。你的控件/页面上可能有UpdatePanel吗? –