我正在尝试在SharePoint 2013中开发可视webpart,我只是在Web部件上有一个asp按钮,它在第一次单击时工作正常但在第二次单击时没有做任何事情。
下面是我的标记
<asp:Button ID="exporttopdf" runat="server" Text="Export To PDF" OnClick="exporttopdf_Click" />
下面是我的OnClick事件代码
protected void exporttopdf_Click(object sender, EventArgs e)
{
try
{
using (MemoryStream stream = new MemoryStream())
{
PdfPCell cell;
SPList list = SPContext.Current.Site.OpenWeb().Lists[this.ListName];
BaseColor rGBColor = WebColors.GetRGBColor("#AFAECE");
PdfPTable element = new PdfPTable(2)
{
TotalWidth = 144f,
LockedWidth = true
};
float[] relativeWidths = new float[] { 1f, 2f };
element.SetWidths(relativeWidths);
element.HorizontalAlignment = Element.ALIGN_MIDDLE;
element.SpacingBefore = 20f;
element.SpacingAfter = 30f;
if (this.PdfHeading != null)
{
cell = new PdfPCell(new Phrase(this.PdfHeading));
}
else
{
cell = new PdfPCell(new Phrase(this.ListName));
}
cell.Colspan = 2;
cell.Border = 0;
cell.Padding = 4;
cell.BackgroundColor = rGBColor;
cell.HorizontalAlignment = 1;
element.AddCell(cell);
Document document = new Document(PageSize.A4, 25f, 25f, 30f, 30f);
PdfWriter instance = PdfWriter.GetInstance(document, stream);
document.Open();
document.AddAuthor("Place Holder");
document.AddCreator("Place Holder");
document.AddKeywords("Place Holder");
document.AddSubject(this.ListName);
document.AddTitle(this.ListName);
instance.Info.Put(new PdfName("Producer"), new PdfString("Place Holder"));
PdfContentByte directContent = instance.DirectContent;
string[] separator = new string[] { ";", "," };
string[] strArray2 = this.ViewFields.Split(separator, StringSplitOptions.None);
new StringBuilder().Append(this.ListName + "\n");
foreach (string str in strArray2)
{
PdfPCell cell2 = new PdfPCell(new Phrase(str))
{
Border = 0,
Padding = 4,
HorizontalAlignment = 0
};
element.AddCell(cell2);
if (str != "Modified By" && str != "Created By")
{
PdfPCell cell3 = new PdfPCell(new Phrase(SPContext.Current.Item[str].ToString()))
{
Border = 0,
Padding = 4,
HorizontalAlignment = 0
};
element.AddCell(cell3);
}
else
{
string strc = SPContext.Current.Item[str].ToString();
string[] separatorc = new string[] { "," };
string[] strArray3 = SPContext.Current.Item[str].ToString().Split(separatorc, StringSplitOptions.None);
PdfPCell cell3 = new PdfPCell(new Phrase(strArray3[3].ToString().Substring(8).Replace(@"\\", @"\")))
{
Border = 0,
Padding = 4,
HorizontalAlignment = 0
};
element.AddCell(cell3);
}
}
PdfPCell cell4 = new PdfPCell(new Phrase("Footer"))
{
Colspan = 2,
Border = 0,
Padding = 4,
BackgroundColor = rGBColor,
HorizontalAlignment = 1
};
element.AddCell(cell4);
document.Add(element);
document.Close();
instance.Close();
stream.Close();
HttpContext.Current.Response.ContentType = "pdf/application";
string str2 = SPContext.Current.Item["Title"].ToString() + ".pdf";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + str2);
HttpContext.Current.Response.OutputStream.Write(stream.GetBuffer(), 0, stream.GetBuffer().Length);
}
}
catch (Exception exception)
{
SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Export To PDF", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, exception.Message, new object[] { exception.StackTrace });
}
}
有什么想法吗?