我试图让用户在form1的文本框中输入一些细节,并获得针对数据库验证的条目。如果条目是正确的,form2将加载其他texbox,包括他们输入的texbox。但我不希望他们对他们输入值的文本框进行任何更改,以前他们不必重新输入值。
如何让文本框中的值从form1移动到form2?
下面的代码显示了我对两种表单所做的事情,但第二种形式dosent在表单加载时显示文本框中的项目。
第一个表格
protected void Button1_Click(object sender,EventArgs e) { string 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
}
}
eagaerly等待你的回复..谢谢..
答案 0 :(得分:2)
在您的代码中,您将值放在会话中的一页:
Session["ProdSn"] = pSnTextBox.Text;
Session["PurDate"] = purDateTextBox.Text.ToString();
但是,您正尝试在Request集合的第2页上阅读它们:
if (Request.QueryString["ProdSn"] != "")
{
pSNoTextBox.Text = Request.QueryString["ProdSn"];
if (Request.QueryString["PurDate"] != "")
{
dateTextBox.Text = Request.QueryString["PurDate"];
}
这没有任何意义。如果要使用会话,还必须从会话对象中取回值。
就个人而言,我会调查Cross Page postbacks和Server.Transfer以及Page.PreviousPage。如果使用Server.Transfer。只需确保不将preserveForm参数设置为false。
答案 1 :(得分:0)
您没有将值作为查询字符串传递。如果您是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
}
}
答案 2 :(得分:0)
在第一个表格的button_click中,我输入了此代码
Session [“ProdSn”] = pSnTextBox.Text; Session [“PurDate”] = purDateTextBox.Text.ToString();
Response.Redirect(“Warranty.aspx?ProdSn =”+ Server.UrlEncode(pSnTextBox.Text)+ “& PurDate =”+ Server.UrlEncode(purDateTextBox.Text));
然后在第二种形式的Page_load事件中我做了这个..
string value = Request [“ProdSn”]; string value1 = Request [“PurDate”]; pSnTextBox.Text = value; purDateTextBox.Text = value1;
没有麻烦持续......轻松而完美地工作......
感谢你帮助.... 非常感激
答案 3 :(得分:-1)
您的asp.net页面必须将您的数据发布到第二页。 只需设置按钮PostBackUrl属性。
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="target.aspx" />
当你把事情变得复杂时,我不明白。 当用户单击该按钮时,所有数据都将发送到您的目标页面。