Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ASP.NET为网页创建新选项卡或窗口_Asp.net_Repeater - Fatal编程技术网

从ASP.NET为网页创建新选项卡或窗口

从ASP.NET为网页创建新选项卡或窗口,asp.net,repeater,Asp.net,Repeater,我有一个主页,我想成为我的web应用程序中用户的调度中心。因此,我希望主页保持打开状态,但当用户选择某些任务时,我可以对其进行设置,以便使用他们选择的任务创建新的选项卡或页面 我知道如何将控制权转移到另一个页面,但如何做服务器之类的事情。转移仅使新页面显示在新选项卡中,并使现有页面在旧选项卡/窗口中保持打开状态 举一个我正在做的例子。我目前在我的主页上有一个转发器,它构造了一个链接按钮列表。链接按钮包含来自数据源的文本。一旦用户点击一个链接按钮,我想打开一个新页面,我希望会话状态与这个新页面一起

我有一个主页,我想成为我的web应用程序中用户的调度中心。因此,我希望主页保持打开状态,但当用户选择某些任务时,我可以对其进行设置,以便使用他们选择的任务创建新的选项卡或页面

我知道如何将控制权转移到另一个页面,但如何做服务器之类的事情。转移仅使新页面显示在新选项卡中,并使现有页面在旧选项卡/窗口中保持打开状态

举一个我正在做的例子。我目前在我的主页上有一个转发器,它构造了一个链接按钮列表。链接按钮包含来自数据源的文本。一旦用户点击一个链接按钮,我想打开一个新页面,我希望会话状态与这个新页面一起保留

这能做到吗?如何做到

我正在使用.NET3.5中的ASP.NET版本


编辑:我不在乎它是标签还是窗口。我只是希望能够生成一个新的网页,并保持现有的一个打开。

我几乎肯定这是不可能的。大多数选项卡式浏览器都有一个可以调整的设置,告诉浏览器应该在哪里启动新页面——在一个全新的窗口中或在一个新的选项卡中


考虑到这是由用户控制的事实,我认为目前没有一种方法能够以独立于浏览器的方式实现这一点。虽然如果IE的DOM扩展公开的对象模型允许您这样做,我不会感到惊讶。

我几乎肯定这是不可能的。大多数选项卡式浏览器都有一个可以调整的设置,告诉浏览器应该在哪里启动新页面——在一个全新的窗口中或在一个新的选项卡中


考虑到这是由用户控制的事实,我认为目前没有一种方法能够以独立于浏览器的方式实现这一点。尽管如果IE的DOM扩展所公开的对象模型允许您这样做,我不会感到惊讶。

这是不可能的,无论是在选项卡中打开的新页面,还是由浏览器中的用户设置而不是代码控制的新页面。

这是不可能的,无论是在选项卡中打开的新页面,或者,新页面由浏览器中的用户设置控制,而不是由代码控制。

您不能在服务器端更改UI行为(例如,使用server.Transfer或Response.Redirect)-它就是不起作用。因此,有两种方法可以做到这一点:

  • 如果您提前知道哪些特定任务需要打开新窗口/选项卡,请适当设置锚定或表单标记的目标(或使用javascript的window.open()函数)
  • 如果需要在服务器端做出打开新窗口/选项卡的决定,则可以生成并返回满足需要的javascript
  • 请记住,新的选项卡/窗口行为完全取决于浏览器和用户的设置,因此无法保证会发生这种情况-某些设置甚至可以强制在同一窗口中打开所有链接,而不管目标窗口或调用窗口。open()

    如果您使用的是基于cookie的会话,这是默认功能,即使在新窗口或选项卡中,用户仍将使用相同的会话,因此您不必执行任何特殊操作来保留会话状态


    如果您使用的是基于url(或无cookieless)的会话密钥,则在使用javascript打开新窗口时,需要确保使用该密钥正确格式化url。我不是很肯定,但我相信使用target属性和相对url应该会自动生成相应的url。

    您不能在服务器端更改UI行为(例如,通过使用server.Transfer或Response.Redirect)-它就是不起作用。因此,有两种方法可以做到这一点:

  • 如果您提前知道哪些特定任务需要打开新窗口/选项卡,请适当设置锚定或表单标记的目标(或使用javascript的window.open()函数)
  • 如果需要在服务器端做出打开新窗口/选项卡的决定,则可以生成并返回满足需要的javascript
  • 请记住,新的选项卡/窗口行为完全取决于浏览器和用户的设置,因此无法保证会发生这种情况-某些设置甚至可以强制在同一窗口中打开所有链接,而不管目标窗口或调用窗口。open()

    如果您使用的是基于cookie的会话,这是默认功能,即使在新窗口或选项卡中,用户仍将使用相同的会话,因此您不必执行任何特殊操作来保留会话状态

    如果您使用的是基于url(或无cookieless)的会话密钥,则在使用javascript打开新窗口时,需要确保使用该密钥正确格式化url。我不是很肯定,但我相信使用target属性和相对url应该会自动生成适当的url。

    这就是我所做的

    我需要根据他们所做的选择添加一个会话状态变量,在Firefox中,它会生成一个新的选项卡,这很好:

    在dispatch页面中,我只使用Server.Transfer转到新页面(添加会话状态后),但是在新页面上,我运行了一个onload脚本。这是我的密码:

    在dispatch页面的Item Command事件处理程序中:

    protected void RecentButtonsRepeater_ItemCommand(object source,
        RepeaterCommandEventArgs e)
    {
        string code = ((LinkButton)e.Item.Controls[1]).Text;
        string sql = "SELECT RunID FROM ProductionRuns WHERE RunCode = @code";
        SqlConnection sqlconn = new SqlConnection(QCDataPath);
        sqlconn.Open();
        SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);
        sqlcomm.Parameters.AddWithValue("@code", code);
        SqlDataReader sdr = sqlcomm.ExecuteReader();
    
        sdr.Read();
    
        int id = sdr.GetInt32(0);
    
        sdr.Close();
        sqlconn.Close();
    
        Session["RunID"] = id;
        Server.Transfer("Sheet.aspx");
    }
    
    在Sheet.aspx标记中:

    <script type="text/javascript">
        function ReOpenScoreHome() {
            window.open("Scoresheets.aspx", "reopenwindow");
        }
    </script>
    </head>
    <body onload="ReOpenScoreHome()">
    
    
    函数home(){
    打开(“Scoresheets.aspx”,“重新打开窗口”);
    }
    
    我就是这么做的

    我需要根据他们所做的选择添加一个会话状态变量,在Firefox中,它会生成一个新的选项卡,这很好:

    在dispatch页面中,我只使用Server.Transfer转到新页面(添加会话状态后),但是在新页面上,我运行了一个onload脚本。这是我的密码:

    在dispatch页面的Item Command事件处理程序中:

    protected void RecentButtonsRepeater_ItemCommand(object source,
        RepeaterCommandEventArgs e)
    {
        string code = ((LinkButton)e.Item.Controls[1]).Text;
        string sql = "SELECT RunID FROM ProductionRuns WHERE RunCode = @code";
        SqlConnection sqlconn = new SqlConnection(QCDataPath);
        sqlconn.Open();
        SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);
        sqlcomm.Parameters.AddWithValue("@code", code);
        SqlDataReader sdr = sqlcomm.ExecuteReader();
    
        sdr.Read();
    
        int id = sdr.GetInt32(0);
    
        sdr.Close();
        sqlconn.Close();
    
        Session["RunID"] = id;
        Server.Transfer("Sheet.aspx");
    }
    
    在Sheet.aspx标记中:

    <script type="text/javascript">
        function ReOpenScoreHome() {
            window.open("Scoresheets.aspx", "reopenwindow");
        }
    </script>
    </head>
    <body onload="ReOpenScoreHome()">