Javascript MVC为一个表行创建PDF文件
我在添加按钮时遇到问题,该按钮将为特定表行生成PDF文件。我可以对整个表执行此操作,但不能对特定行执行此操作 我的“执行”视图(为整个表创建PDF文件):Javascript MVC为一个表行创建PDF文件,javascript,c#,asp.net-mvc,itext,Javascript,C#,Asp.net Mvc,Itext,我在添加按钮时遇到问题,该按钮将为特定表行生成PDF文件。我可以对整个表执行此操作,但不能对特定行执行此操作 我的“执行”视图(为整个表创建PDF文件): 您的初始示例提取网格元素的内部内容。似乎不存在可从中提取行内容的周围可识别元素。一个简单的修复方法是向每一行添加id,将按钮id更改为类以添加eventlistener,并添加数据-属性以保存单击的行的信息: @foreach(Model.ib中的变量项) { @使用(Html.BeginForm(“导出”、“订单”、FormMethod.P
您的初始示例提取
网格
元素的内部内容。似乎不存在可从中提取行内容的周围可识别元素。一个简单的修复方法是向每一行添加id
,将按钮id更改为类以添加eventlistener,并添加数据-
属性以保存单击的行的信息:
@foreach(Model.ib中的变量项)
{
@使用(Html.BeginForm(“导出”、“订单”、FormMethod.Post))
{
}
@item.OrderNr
@项目.材料编号
@项目1.SapNr
@项目.批次号
@item.TankName
}
还有JavaScript:
$(.btnSubmit”)。单击(函数(事件){
var target=$(event.currentTarget).data('row');
$(“输入[name='GridHtml']”)val($(target.html());
});
这将向控制器发送的只是单击行的内容:
@使用(Html.BeginForm(“导出”、“订单”、FormMethod.Post))
{
}
@item.OrderNr
@项目.材料编号
@项目1.SapNr
@项目.批次号
@item.TankName
在控制器中,您可以删除按钮,将其包装在表标记的其余部分,然后转换为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>
// 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>
[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");
}
}