2

我想调用一个函数javascript函数来从打印按钮单击后面的代码中打印表单。我首先将我的gridview的一列隐藏在表单上,​​然后我想打印它。

protected void btnPrint_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in grdTransaction.Rows)
    {

        if (UType == "A")
        {
            grdTransaction.Columns[7].Visible = false;
        }
        else
        {
            grdTransaction.Columns[3].ItemStyle.Width = 100;
            grdTransaction.Columns[5].Visible = false;
        }
    }
}

我已经用过

1) ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Script", 
  "<script type='text/javascript'>clicked('printablediv');</script>", true);

2) ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Script",
   "clicked('printablediv');", true);

3) btnPrint.Attributea.Add("onclick","clicked('printablediv');");

4) btnPrint.Attributea.Add("onclick","return clicked('printablediv');");

以上所有选项均无效,但在OnClientClick事件上有效。请帮帮我。提前致谢。

4

2 回答 2

0

如果您查看 msdn see上的示例,您会注意到您必须包含一个包含标签的整个脚本块。

此外,OnClientClick 事件听起来确实是正确的事件。那么,如果这行得通,那有什么问题呢?

于 2013-08-22T11:44:08.833 回答
0

在前两个选项中:

您尝试过的只是尝试调用名为 的javascript方法clicked(args),因此实际上并未将其绑定到任何按钮单击。当您<script>将最后一个参数作为true. 它应该在页面加载后立即工作。

现在为您的最后两个选项:

看看会发生什么,当您单击按钮时,它会回发,因此您看不到 javaSript 代码的效果,因为重新加载了整个页面。你需要防止回发。

尝试这个:

btnPrint.Attributes.Add("onclick","clicked('printablediv'); return false");

确保,你return false;从你点击的方法。

另外,请注意分号,即;,当您执行 control.Attributes.Add 时,它已经附加了一个分号;你不是自己做的

于 2013-08-22T11:52:11.573 回答