<table width="100%" border="1" runat="server" id="tbRecord">其实TR很多,我就省略了些。
<tr align="center" class="gvHead">
<td>
地点
</td>
<td>
设备名称
</td>
<td>
测量数据
</td>
<td width="10%">
设备状态
</td>
<td width="18%">
备注
</td>
</tr>
<tr>
<td rowspan="2" align="center">
北近台
</td>
<td align="center">
云高仪<br />
CT25K
</td>
<td>
云高:<asp:Label runat="server" ID="lblCT25KBJTData"></asp:Label>
m
</td>
<td align="left">
<asp:CheckBoxList ID="cblCT25KBJT" runat="server" Enabled="false" >
<asp:ListItem Text=" 正常">
</asp:ListItem>
<asp:ListItem Text=" 不正常">
</asp:ListItem>
</asp:CheckBoxList>
</td>
<td>
</td>
</tr>
</table>
后台代码:
protected void imgBtnExecPDF_Click(object sender, EventArgs e)循环table赋值的时候 总是有问题 ->[color=#FF0000]无法获取 的内部内容,因为该内容不是文本。[/color
{
DataTable dt = new DataTable();
foreach (HtmlTableRow tr in tbRecord.Rows)
{
for (int i = 0; i < tr.Cells.Count; i++)
{
dt.Columns.Add(tr.Cells[i].InnerText);
}
}
// DALEMEquipments.DTBEquipmentListDataTable dt = BLLEMEquipmentManagement.GetAllEquipMentList();
OutPdf(dt, "aa", 12);
}
] public static void OutPdf(DataTable Data, string FontPath, float FontSize)
{
MemoryStream m = new MemoryStream();
Document document = new Document();
try
{
HttpContext.Current.Response.ContentType = "application/pdf";
PdfWriter.GetInstance(document, m);
document.Open();
//定义字体
BaseFont baseFont =
BaseFont.CreateFont(
FontPath,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, FontSize);
//添加内容
PdfPTable table = new PdfPTable(Data.Columns.Count);
for (int i = 0; i < Data.Rows.Count; i++)
{
for (int j = 0; j < Data.Columns.Count; j++)
{
table.AddCell(new Phrase(Data.Rows[i][j].ToString(), font));
}
}
document.Add(table);
}
catch (DocumentException ex)
{
HttpContext.Current.Response.Write(ex.Message);
}
document.Close();
string filename = "1";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");
HttpContext.Current.Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
HttpContext.Current.Response.OutputStream.Flush();
HttpContext.Current.Response.OutputStream.Close();
}
5 个解决方案
#2
你后来采取的是什么方法啊?没看到你说呀?你的bolg地址是?有源码吗? 我本来也是用水晶报表做的,但是我里面的数据是从数据库里读取某个列 然后解析xml获取相应的值 然后构建虚拟表 觉得那比较麻烦,而且复选框不好显示。 急~~猫哥
#3
兄弟 你呀咋实现的嘛? 数据是读取到了 但是在tale里面放了服务器标签 并从后台加载赋值的地方就会报错
无法获取 的内部内容,因为该内容不是文本
无法获取 的内部内容,因为该内容不是文本
#4
#5
"无法获取 的内部内容,因为该内容不是文本"这个问题的解决方案:
可以把要显示的内容放到divPDF层中
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
divPDF.RenderControl(htw);
string str = strb.ToString();//str即为所需值
可以把要显示的内容放到divPDF层中
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
divPDF.RenderControl(htw);
string str = strb.ToString();//str即为所需值
#1
#2
你后来采取的是什么方法啊?没看到你说呀?你的bolg地址是?有源码吗? 我本来也是用水晶报表做的,但是我里面的数据是从数据库里读取某个列 然后解析xml获取相应的值 然后构建虚拟表 觉得那比较麻烦,而且复选框不好显示。 急~~猫哥
#3
兄弟 你呀咋实现的嘛? 数据是读取到了 但是在tale里面放了服务器标签 并从后台加载赋值的地方就会报错
无法获取 的内部内容,因为该内容不是文本
无法获取 的内部内容,因为该内容不是文本
#4
#5
"无法获取 的内部内容,因为该内容不是文本"这个问题的解决方案:
可以把要显示的内容放到divPDF层中
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
divPDF.RenderControl(htw);
string str = strb.ToString();//str即为所需值
可以把要显示的内容放到divPDF层中
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
divPDF.RenderControl(htw);
string str = strb.ToString();//str即为所需值