Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC为一个表行创建PDF文件_Javascript_C#_Asp.net Mvc_Itext - Fatal编程技术网

Javascript MVC为一个表行创建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

我在添加按钮时遇到问题,该按钮将为特定表行生成PDF文件。我可以对整个表执行此操作,但不能对特定行执行此操作

我的“执行”视图(为整个表创建PDF文件):


您的初始示例提取
网格
元素的内部内容。似乎不存在可从中提取行内容的周围可识别元素。一个简单的修复方法是向每一行添加
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");
            }
        }