2011-09-06 131 views
0

我有一个网页与复选框列表来选择多个水晶报告来查看。我想在新标签页或窗口中打开这些报告。 我尝试这样做:如何将一个asp页面重定向到另外两个页面?

这是显示报告按钮:

<asp:Button ID="Button2" runat="server" Text="Show Report" OnClick="ButtonShowReport_Click" 
         CssClass="button" OnClientClick="aspnetForm.target ='_blank';"/> 

这是我的GridView控件:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
     RowStyle-HorizontalAlign="Center" AutoGenerateColumns="False" 
     DataKeyNames="AccountID"> 
     <RowStyle BackColor="#> 
     <Columns> 
      <asp:TemplateField HeaderText="Choose Client's Accounts"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server"/> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField Visible="false"> 
       <ItemTemplate> 
        <asp:Label id="lblAccountId" runat ="server" text='<%# Eval("AccountID")%>'> 
        </asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="AccountID" HeaderText="AccountID" Visible="false"/> 
      <asp:BoundField DataField="AccountName" HeaderText="Account Name" /> 
      <asp:BoundField DataField="Name" HeaderText="Client Name" /> 
     </Columns> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <EditRowStyle BackColor="#2461BF" /> 
     <AlternatingRowStyle BackColor="White" /> 
</asp:GridView> 

我的C#代码如下所示:

protected void ButtonShowReport_Click(object sender, EventArgs e) 
    { 
     string accountID; 
     int Rows = GridView1.Rows.Count; 
     for (int i = 0; i < Rows; i++) 
     { 
      //CheckBoxField cb = ((CheckBoxField)gvASH.Rows[i].Cells[1]).; 
      CheckBox cb = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); 
      if (cb.Checked == true) 
      { 
       accountID = ((Label)GridView1.Rows[i].FindControl("lblAccountID")).Text;//GridView1.DataKeys[i].Value.ToString();//GridView1.Rows[i].Cells[1].Text; 
       //Button2.Enabled = true; 
       openReport(accountID); 
      } 
     } 
    } 

    protected void openReport(string accountID) 
    { 
     //some code for setting parameters of the crystal report 
     //and for creating report key 

     Response.Redirect(string.Format("~/Report.aspx?ReportKey={0}", 
      ReportKey.ToString()),false); 
    } 

因此,如果用户选中了2个报告并单击了ShowReport按钮,它将执行循环但是操作只有一个新选项卡与最后报告选择...

任何建议,请???

回答

0

将此添加到触发重定向的控件。我知道这适用于Buttons/LinkBut​​tons,不知道它是否可以在复选框上工作。

OnClientClick="aspnetForm.target ='_blank';" 
+0

感谢回答... 其实我加入它,它在新标签打开正确的水晶报表。问题是只有上次检查的报告在该页面中打开,而我需要在多个选项卡中同时打开多个报告 – Fodjy

0

一种方法可以考虑:

而不是做重定向到代码中的每个报表背后 - 动态生成一些JavaScript有使用window.open每个报告。 JavaScript的将类似于此:

<script type="text/javascript"> 
window.open("<report1URL>", "_blank"); 
window.open("<report2URL>", "_blank"); 
... 
window.open("<reportNURL>", "_blank"); 
</script> 

然后,而不是做一个Response.Redirect的,你应该能够做一个Respone.Write()去执行代码浏览器。

string myJavaScript= <dynamicallyGenerateJavascript>; 
Response.Write(myJavaScript); 
相关问题