我正在使用asp.net中的radgrid。 在ExportToPDF上进行操作时,我需要在单独的页面中获取每条记录。 目前我正在获取所有记录,没有任何页面级别到每个记录。但我们如何在页面级别设置每个记录?
示例:如果有100条记录,我应该能够在导出的pdf中获得100页,其中每页记录在一页中。
Aspx代码:
<telerik:RadGrid ID="dlTemplate" runat="server" AutoGenerateColumns="false"
AllowPaging="true">
<GroupingSettings CaseSensitive="false" />
<PagerStyle AlwaysVisible="true" Mode="NextPrevAndNumeric" />
<ExportSettings ExportOnlyData="true" OpenInNewWindow="true"
IgnorePaging="true" FileName="Template">
<Pdf PageTitle="Letter Template" PaperSize="A4" />
<Pdf PageWidth="270mm" PageHeight="297mm" />
</ExportSettings>
<MasterTableView DataKeyNames="Message" TableLayout="Auto" HeaderStyle-
CssClass="title-b14px" ItemStyle-CssClass="txtlable-b13px-normal">
<Columns>
<telerik:GridBoundColumn UniqueName="Message" DataField="Message"
HeaderText="Message">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Aspx.cs代码:
protected void print_page(object sender, EventArgs e)
{
try
{
DataTable dt1 = new DataTable();
dt1.Columns.Add("Message", typeof(string));
DataRow dr = dt1.NewRow();
dt1.Rows.Add(dr);
//dt1.Rows[0][0] = lblLable.Text;
string msg = string.Empty;
foreach (GridDataItem row in dlTemplate.Items)
{
for (int i = 0; i < dlTemplate.Columns.Count; i++)
{
var message = row["Message"].Text;
message = Regex.Replace(message, "(<style.+?</style>)|
(<script.+?</script>)", "", RegexOptions.IgnoreCase |
RegexOptions.Singleline);
msg += message + "<br/><hr/>";
}
}
dt1.Rows[0][0] = msg.Remove(msg.Length - 5);
dlTemplate.DataSource = dt1;
dlTemplate.DataBind();
dlTemplate.MasterTableView.ExportToPdf();
}
catch (Exception ex)
{
BLGeneral.LogException(ex);
}
}
答案 0 :(得分:0)
更新导出设置
<ExportSettingsExportOnlyData="true"Excel-Format="Html"OpenInNewWindow="true">
<PdfPageHeight="210mm"PageWidth="297mm"DefaultFontFamily="Arial Unicode MS"PageTopMargin="45mm"
BorderStyle="Thin"BorderColor="#666666">
</Pdf>
</ExportSettings>