【问题标题】:Passing Value from textboxes in one webform to texboxes in another webform将值从一个网络表单中的文本框传递到另一个网络表单中的文本框
【发布时间】:2009-12-21 15:36:29
【问题描述】:

我试图让用户在 form1 的文本框中输入一些详细信息,并根据数据库验证条目。如果输入正确,form2 会加载其他 texbox,包括他们输入的那个。但是我不希望他们对之前输入值的文本框进行任何更改,他们也不应该再次重新输入值。

如何让文本框中的值从 form1 移动到 form2?

下面的代码显示了我对这两个表单所做的事情,但第二个表单在加载表单时会显示文本框中的项目。

第一种形式

protected void Button1_Click(object sender, EventArgs e) { 字符串 strConn;

        strConn = "Provider=MIcrosoft.Jet.OLEDB.4.0;data Source=" +
            Server.MapPath("App_Data/test.mdb");

        OleDbConnection mDB = new OleDbConnection(strConn);
        mDB.Open();

        prodSnStr = pSnTextBox.Text;
        purDate = Convert.ToDateTime(purDateTextBox.Text);
        string dateStr = purDateTextBox.Text;

        productClass aProduct = new productClass();

        if (aProduct.Prods(mDB, prodSnStr, purDate))
        {
            Session["ProdSn"] = pSnTextBox.Text;
            Session["PurDate"] = purDateTextBox.Text.ToString();

            Response.Redirect("Warranty.aspx");

        }
        else
        {
            //error message
        }
     }

形式二

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Request.QueryString["ProdSn"] != "")
            {
                pSNoTextBox.Text = Request.QueryString["ProdSn"];

                if (Request.QueryString["PurDate"] != "")
                {
                    dateTextBox.Text = Request.QueryString["PurDate"];
                }
                else
                {
                    //error message to display
                }

            }
            else
            {
                //error message to display
            }
        }

非常期待您的回复..谢谢..

【问题讨论】:

    标签: asp.net webforms


    【解决方案1】:

    在您的代码中,您将一页上的值放入会话中:

        Session["ProdSn"] = pSnTextBox.Text;
        Session["PurDate"] = purDateTextBox.Text.ToString();
    

    但是您试图在请求集合的第二页上读出它们:

        if (Request.QueryString["ProdSn"] != "")
        {
             pSNoTextBox.Text = Request.QueryString["ProdSn"];
        if (Request.QueryString["PurDate"] != "")
        {
             dateTextBox.Text = Request.QueryString["PurDate"];
        }
    

    这毫无意义。如果要使用会话,还必须从会话对象中取回值。

    我个人会研究Cross Page postbacksServer.Transfer 以及Page.PreviousPage。如果使用 Server.Transfer,请确保不要将 preserveForm 参数设置为 false。

    【讨论】:

      【解决方案2】:

      您没有将值作为查询字符串传递。如果你是你的 Response.Redirect 看起来像这样:

      Response.Redirect("Warranty.aspx?ProdSn=something&PurDate=something");
      

      既然您将这些值保存在 Session 变量中,请尝试以下操作:

      protected void Page_Load(object sender, EventArgs e)
      {
          if (!Page.IsPostBack)
          {
              if (Session["ProdSn"] != "")
              {
                  pSNoTextBox.Text = Session["ProdSn"];
      
                  if (Session["PurDate"] != "")
                  {
                      dateTextBox.Text = Session["PurDate"];
                  }
                  else
                  {
                      //error message to display
                  }
      
              }
              else
              {
                  //error message to display
              }
          }
      

      【讨论】:

        【解决方案3】:

        在第一个表单的 button_click 中,我输入了此代码

        Session["ProdSn"] = pSnTextBox.Text; 会话["PurDate"] = purDateTextBox.Text.ToString();

        Response.Redirect("Warranty.aspx?ProdSn=" + Server.UrlEncode(pSnTextBox.Text) + "&PurDate=" + Server.UrlEncode(purDateTextBox.Text));

        然后在第二个表单的 Page_load 事件中我这样做了..

        字符串值 = Request["ProdSn"]; string value1 = Request["PurDate"]; pSnTextBox.Text = 值; purDateTextBox.Text = value1;

        没有持续的麻烦....简单且完美的工作....

        感谢 ya'11 的帮助.... 非常感谢

        【讨论】:

          【解决方案4】:

          您的 asp.net 页面必须将您的数据发布到第二页。 只需设置您的按钮 PostBackUrl 属性。

          <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="target.aspx" />
          

          我不明白你把事情弄复杂了。 当用户单击按钮时,所有数据都将发送到您的目标页面。

          【讨论】:

          • 非常好...但是如何将发送的项目传递给表单上的控件?
          • 您可以从表单集合中读取值,例如 Request[controlsclientid] 并将值分配给控件。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-21
          • 2018-01-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多