【发布时间】:2019-12-18 13:00:02
【问题描述】:
我在添加会为特定表格行生成 PDF 文件的按钮时遇到问题。我可以对整个表执行此操作,但不能对特定行执行此操作。
我的“执行”视图(为整个表格创建 PDF 文件):
<div id="Grid">
<table class="table table-hover table-bordered" id="ExeTable">
<thead>
<tr>
<th class="text-center">Order nr</th>
<th class="text-center">Mat nr</th>
<th class="text-center">SAP nr</th>
<th class="text-center">Batch nr</th>
<th class="text-center">Tank</th>
</tr>
</thead>
<tbody id="myTable">
@foreach (var item in Model.ib)
{
<tr>
<td class="text-center">@item.OrderNr</td>
<td class="text-center">@item.MatNr</td>
<td class="text-center">@item.SapNr</td>
<td class="text-center">@item.BatchNr</td>
<td class="text-center">@item.TankName</td>
</tr>
}
</tbody>
</table>
</div>
@using (Html.BeginForm("Export", "Order", FormMethod.Post))
{
<input type="hidden" name="GridHtml" />
<input type="submit" id="btnSubmit" value="Export" />
}
<script>
$(function (print) {
$("#btnSubmit").click(function () {
$("input[name='GridHtml']").val($("#Grid").html());
});
});
</script>
但我想在表格中有一个新列,其中有一个按钮可以为特定行生成 PDF。我尝试了一些方法,但没有成功。
// I tried this
<table class="table table-hover table-bordered" id="ExeTable">
<thead>
<tr>
<th>Create PDF</th>
<th class="text-center">Order nr</th>
<th class="text-center">Mat nr</th>
<th class="text-center">SAP nr</th>
<th class="text-center">Batch nr</th>
<th class="text-center">Tank</th>
</tr>
</thead>
<tbody id="myTable">
@foreach (var item in Model.ib)
{
<tr>
<td class="text-center">
@using (Html.BeginForm("Export", "Order", FormMethod.Post))
{
<input type="hidden" name="GridHtml" />
<input type="submit" id="btnSubmit" value="Export" />
}
</td>
<td class="text-center">@item.OrderNr</td>
<td class="text-center">@item.MatNr</td>
<td class="text-center">@item.SapNr</td>
<td class="text-center">@item.BatchNr</td>
<td class="text-center">@item.TankName</td>
</tr>
}
</tbody>
</table>
我在“订单”控制器中生成 PDF 文件的方法:
[HttpPost]
[ValidateInput(false)]
public FileResult Export(string GridHtml)
{
using (MemoryStream stream = new System.IO.MemoryStream())
{
StringReader sr = new StringReader(GridHtml);
Document pdfDoc = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
return File(stream.ToArray(), "application/pdf", "Grid.pdf");
}
}
【问题讨论】:
标签: javascript c# asp.net-mvc itext