我有一个页面“ PictureLotFiles.aspx”,其中包含一个CheckBoxList和一个链接(最初是超链接,但对我来说不起作用,因为它不会为我保存会话)。

PicturesLotFiles.aspx
<asp:CheckBoxList ID="cblWarehouse" runat="server" Font-Size="10pt" Font-Names="Verdana"
        RepeatColumns="8" RepeatDirection="Horizontal" OnSelectedIndexChanged="cblWarehouse_SelectedIndexChanged">
</asp:CheckBoxList>

<asp:LinkButton ID="lnkBtnSummary" runat="server" OnClick="lnkBtnSummary_Click"
        Target="_blank">Review Lot Pictures Summary Report</asp:LinkButton>


我要完成的工作是将选定的值从cblWarehouse传递到摘要页面“ PictureLotFilesSummary.aspx”。所以我有下面的代码。

PicturesLotFiles.aspx.cs
protected void lnkBtnSummary_Click(object sender, System.EventArgs e)
{
    Session["WarehouseSelected"] = "";

    StringBuilder sb = new StringBuilder();
    foreach (ListItem listItem in cblWarehouse.Items)
    {
        if (listItem.Selected)
        {
            sb.Append(listItem.Value);
            sb.Append(", ");
        }
    }

    if (sb.Length>2)
        sb.Remove(sb.Length - 2, 2);

    Session["WarehouseSelected"] = sb;

    //Response.Write("<SCRIPT language=\"javascript\">open('PicturesLotFilesSummary.aspx','_blank','top=0,left=0,status=yes,resizable=yes,scrollbars=yes');</script>");
    //Response.Redirect("~/PicturesLotFilesSummary.aspx");
}


从上面的代码中,我可以使用Session传递值,但是我还没有尝试使用QueryString。我注释掉了最后两行,因为其中一个打开了一个新的弹出窗口,而另一个仅重定向到页面。

我还有其他方法可以尝试实现自己的目标吗?将选择的值传递到摘要页面并在新选项卡(而不是新窗口)中将其打开,是哪个?
谢谢!

最佳答案

您可以使用window.open,但删除所有Windows格式化参数

Response.Write("<SCRIPT language=\"javascript\">open('PicturesLotFilesSummary.aspx','_blank');</script>");


之后,由浏览器决定是否设置为在新窗口或新标签页中打开链接。

如果您需要传递sd作为参数,那没什么大不了的:

Response.Write("<SCRIPT language=\"javascript\">open('PicturesLotFilesSummary.aspx?sb=" +
    sb + "','_blank');</script>");

10-07 19:40
查看更多