在页面进行数据增加功能,当添加数据成功,应给出一个弹出信息框,显示“添加成功”。当用户点击提示框的确定后,再将页面初始化,或进行下一条记录的录入或是进行跳转到别的页面。现在是这样的,如果我希望弹出信息框,让用户点击确定后,再跳转到别的页面。但是现在信息框刚弹出,页面已经跳转了。
有没有办法来解决呢。

解决方案 »

  1.   

    ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + str+ "');window.location.href ='" + strUrl + "';</script>");
      

  2.   

    请问这里的str和strurl分别是提示信息和要跳转的页面文件吗
      

  3.   

    从用户体验的角度来说,应该使用 Ajax。
      

  4.   

    STR 提示信息
    strurl跳转地址
    提示使用confirm 
      

  5.   

    谢谢 各位 
    wuyq11真高人,经常得到你的指点
      

  6.   

    <script type="text/javascript" language="javascript">
    function delBMsg()
            {
                if(!confirm('你确定要取消这条公告么?'))
                    return false;
                return true;
            }
    </script>
    <asp:LinkButton ID="lbtnDelete" runat="server" OnClientClick="return delBMsg();">删除</asp:LinkButton>
      

  7.   

    楼主用的是Page.ClientScript.RegisterClientScriptBlock的情况吧,RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面。RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面所以效果上会有所不同的~
      

  8.   

    按照你的方法,我下面有点迷糊了 
    这一个页面是通用的,要根据本页面的之前的调用页面而跳转,如下:string str = "添加数据成功!";
    ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + str + "');window.location.href ='" + strUrl + "';</script>");
             
                if (ViewState["MOTHER_PAGE"].ToString() == "WaterMeterSlManage.aspx")
                {//如果是该页面调用的,就不跳转,还在本页操作,只是要清空一下控件
                    txtWaterMeterCode.Text = string.Empty;
                    txtWaterMaterName.Text = string.Empty;
                    TextBox1.Text = string.Empty;
                    TextBox2.Text = string.Empty;
                    TextBox3.Text = string.Empty;
                    TextBox4.Text = string.Empty;
                    TextBox6.Text = string.Empty;
                    TextBox7.Text = string.Empty;
                    txtFysl.Text = string.Empty;
                }
                else
                { //要跳转
                    Context.Items.Add("Page_Size", ViewState["PageSize"].ToString());
                    Context.Items.Add("Cur_Page", ViewState["CurPage"].ToString());
                    Context.Items.Add("UNIT_CODE", ViewState["UNIT_CODE"].ToString());
                    Server.Transfer(ViewState["MOTHER_PAGE"].ToString());            }
    这种如何是好啊,再请教了
      

  9.   

    楼主意思下面else要部分要转跳其他页面?那在重定向下吧~
    还有你那个赋空值不用那么麻烦
            private void ClearData()
            {
                TextBox textbox;
                foreach (Control control in this.Controls)
                {
                    if (control is TextBox)
                    {
                        textbox = control as TextBox;
                        textbox.Text = string.Empty;
                    }
                }
            }
    就可以了~
      

  10.   

    非常感谢楼上
    我还是有点不明白,
    ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + str + "');window.location.href ='" + strUrl + "';</script>");
    里面已经有了一个跳转,那我怎么按不同的条件再跳转还是不跳转呢
      

  11.   

    我不清楚你这个页面逻辑是干嘛的看你最开始写的需求貌似是这个页面就是用来增加的然后操作成功转跳,但是为什么是在转跳自己的页面?如果是为了刷新你在成功绑定下你的数据绑定控件就可以了~所以想问下你这个else里面是想干嘛...~
      

  12.   

    是这样的,是有两个页面链接到这个功能页,其中一个是不需要重定向回去的,添加完一条后,仍然可以继续添加新数据,除非点击返回。
    另一个是从一个查询页面的gridview中链接的,当添加完后,要再返回那个gridview我已经将代码修改了,如下:
      if (ViewState["MOTHER_PAGE"].ToString() == "WaterMeterSlManage.aspx")
         {
          LTP.Common.MessageBox.Show(this, "添加数据成功!");
          txtWaterMeterCode.Text = string.Empty;
          txtWaterMaterName.Text = string.Empty;
          TextBox1.Text = string.Empty;
          TextBox2.Text = string.Empty;
          TextBox3.Text = string.Empty;
          TextBox4.Text = string.Empty;
          TextBox6.Text = string.Empty;
          TextBox7.Text = string.Empty;
          txtFysl.Text = string.Empty;
       }
       else
       {
         Context.Items.Add("Page_Size", ViewState["PageSize"].ToString());
         Context.Items.Add("Cur_Page", ViewState["CurPage"].ToString)); 
         Context.Items.Add("UNIT_CODE", ViewState["UNIT_CODE"].ToString());
         string str = "添加数据成功!";
         string strUrl = ViewState["MOTHER_PAGE"].ToString();
         ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + str + "');window.location.href ='" + strUrl + "';</script>");
        }
        }现在跳转是成功了,但是Context.Items.Add语句设置的变量没有起作用,在跳转回后之后,无法接收到变量
      

  13.   

    string str = "添加数据成功!";
    string strUrl = ViewState["MOTHER_PAGE"].ToString();
    ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + str + "');window.location.href ='" + strUrl + "';</script>");使用上述跳转没有问题 
    只是
     Context.Items.Add("Page_Size", ViewState["PageSize"].ToString());
     Context.Items.Add("Cur_Page", ViewState["CurPage"].ToString());
     Context.Items.Add("UNIT_CODE", ViewState["UNIT_CODE"].ToString());
    这些传参和变量不能用了,在跳转后的页面无法调用上述参数和变量,
    请教有没有解决办法
      

  14.   

    你把这些东西
    Context.Items.Add("Page_Size", ViewState["PageSize"].ToString());
     Context.Items.Add("Cur_Page", ViewState["CurPage"].ToString());
     Context.Items.Add("UNIT_CODE", ViewState["UNIT_CODE"].ToString());
    放到
    string str = "添加数据成功!";
    string strUrl = ViewState["MOTHER_PAGE"].ToString();
    ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + str + "');window.location.href ='" + strUrl + "';</script>");
    这些后面 
      

  15.   

    这些东西没有赋值 是因为你的页面已经进行了跳转,直接开始执行新页面的后台Code去了