【问题标题】:Printing in Javascript whilst using <%# %>使用 Javascript 打印 <%# %>
【发布时间】:2013-02-21 16:44:20
【问题描述】:

我需要从一个用 ASP.NET 制作的网站打印一个DataViewGrid,并使用 JavaScript 来完成它,因为用 C# 实现它似乎更容易。下面是我用来尝试打印文档的代码。

<script type="text/javascript">
function doPrint() {
    var prtContent = document.getElementById('<%# dgvInvoices.ClientID %>');
    prtContent.border = 0;
    var WinPrint = window.open('', '', 'left=100,top=100,width=1000,height=1000,toolbar=0,scrollbars=1,status=0,resizable=1');
    WinPrint.document.write(prtContent.outerHTML);
    WinPrint.document.close();
    WinPrint.focus();
    WinPrint.print();
    WinPrint.close();
}

我不得不从 ('&lt;%= dgvInvoices.ClientID %&gt;'); 更改第 3 行,因为它给了我一个控制错误,现在我相信这会阻止我的文档打印。有没有人对此有任何解决方法或修复?还是用 C# 打印的简单方法?

原来的错误是:

无法修改 Controls 集合,因为该控件包含代码块(即 )。

【问题讨论】:

  • "(...) 它给了我一个控制错误"。哪个错误?
  • 如果将&lt;%# .... %&gt; 更改为&lt;%=(...)%&gt; 会发生什么?
  • 错误是无法修改控件集合,因为控件包含代码块(即 )。并将其更改为 并没有修复原始错误
  • 我不确定是什么问题,但我已经尝试过另一种解决方法。我已经使用后面的代码渲染了 javascript(你可以使用这个的文字控制)或简单地渲染它。或者保留一个隐藏的文本框并使用 C# 服务器端代码在该隐藏文本框中填充客户端 ID,然后从 javascript 代码中使用它。
  • @user1524116 找到解决方案了吗?

标签: c# javascript asp.net printing


【解决方案1】:

如果您使用 ASP.NET Ajax 并且在您的页面或母版页中有一个 ScriptManager,您可以这样做:

var prtContent = $get('<%= this.dgvInvoices.ClientID %>');

另外,如果您使用的是 .Net 框架版本 4 或更高版本,您可以在控件中设置属性 ClientIDMode="Static",因此 ClientID 将按照声明呈现,您将能够使用 document.getElementById将声明的 ID 作为参数传递的 javascript 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2019-01-03
    • 2011-09-22
    相关资源
    最近更新 更多