2

我的应用程序在用C#.Net编码的Asp.net MVC3中,我的要求是,有一个保存到草稿按钮,可以将数据保存到我数据库中的某个表中。我在视图上有一个打印按钮。我正在使用 SSRS 打印我的数据。当用户填写表格并单击保存草稿时,该数据将被保存,然后用户可以单击“打印”按钮以获取已保存数据的 SSRS 报告。我的问题是当用户单击打印按钮时,应该打开一个新选项卡,其中应该看到报告。

以下是我的查看代码

    $("#Print_button").live("click", function () {
       $('#My_Form').attr('action', 'My Controller action which passes parameter to 
       SSRS report');
    });

我的打印按钮的 HTML

 <input type="submit" id="Print_button"  value="Print"  />

控制器代码

     [HttpPost]
     public ActionResult Method_That_Pass_ParameterTo_SSRS(MyClass Class_Object)
     {
          My Logic to pass the parameters to SSRS report
          return View(Class_Object);
     }

我解决问题的尝试

1.我尝试在按钮 HTML 中添加 Target="_blank"

2. Jquery Print_Button点击事件中的window.open('MyAction','_blank')

4

2 回答 2

1

尝试这个。由于正在尝试将数据打印为新窗口/选项卡中的报告。

将您的按钮类型更改为按钮并像这样定义单击。

<input type="button" id="Print_button"  value="Print" onclick="ShowReport()"/>

然后在您的操作方法方法中。

 public ActionResult Method_That_Pass_ParameterTo_SSRS(MyClass Class_Object)
 {
      My Logic to pass the parameters to SSRS report
      return View(Class_Object);
 }

然后来到你的剧本

<script type="text/javascript">
    function ShowReport(e) {
        // you can use dataitem here if needed to pass any variable
        //var dataItem = this.dataItem($(e.currentTarget).closest("tr"));            
        //BaseUrl will the url of your website
        // for example if url is http://localhost:10259/Home/Index
        //then BaseUrl is "http://localhost:10259/"
        var FullUrl = "Baseurl"+ "ControllerName/ActionName/" + param1(ifany);
        window.open(
                 'FullUrl',
                 '_blank' // <- This is what makes it open in a new window.
                 );
    }        
</script>

只需确保您的控制器正确地将数据传递给所需的视图。

于 2013-09-11T08:32:33.497 回答
0

我会稍微改变一下逻辑。如果已经通过单击其他按钮保存了数据,则您可能无法使用表单传递参数。

相反,您可以Html.ActionLink在单击后拥有并替换参数。使用这种方法,您可以在新选项卡中打开结果。看:

@Html.ActionLink("Print", "Action", "Controller", new{param = xxx}, new {@target="_blank", @class="print"})

    <script>
    $(function () {
    $('.print').click(function () {          
                var param = $(".somediv").val() //*Get your param value
                this.href = this.href.replace("xxx", param);
            });
    });
    </script>
于 2013-09-11T08:09:39.640 回答