Передача значения из текстовых полей в одной веб-форме в текстовые поля в другой веб-форме - PullRequest
0 голосов
/ 21 декабря 2009

Я пытаюсь заставить пользователей ввести некоторые данные в текстовое поле в форме 1 и проверить запись в базе данных. если запись правильная, form2 загружается с другими текстовыми полями, включая тот, в который они сделали записи. однако я не хочу, чтобы они вносили какие-либо изменения в текстовые поля, в которые они ранее вводили значения, и при этом им не нужно повторно вводить значения.

как мне получить значения в текстовых полях для перехода от формы 1 к форме 2?

приведенный ниже код показывает, что я сделал с обеими формами, но вторая форма не отображает элементы в текстовых полях при загрузке формы.

первая форма

защищенный void Button1_Click (отправитель объекта, 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
            }
        }

Очень жду ваших ответов .. спасибо ..

Ответы [ 4 ]

2 голосов
/ 21 декабря 2009

В своем коде вы помещаете значения на одной странице в сеанс:

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

Однако вы пытаетесь прочитать их на 2-й странице из коллекции запросов:

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

Это не имеет смысла.Если вы хотите использовать сеанс, вы также должны получить значения обратно из объекта сеанса.

Лично я бы посмотрел на Кросс-постбэки и Server.Transfer в сочетании с Page.PreviousPage .Просто убедитесь, что для параметра preserveForm не установлено значение false, если используется Server.Transfer.

0 голосов
/ 21 декабря 2009

В 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 второй формы я сделал это ..

строковое значение = Запрос ["ProdSn"]; string value1 = Request ["PurDate"]; pSnTextBox.Text = значение; purDateTextBox.Text = value1;

Никаких хлопот, выдержанных .... легко и безупречно работающих ...

благодарю за помощь 11 я очень благодарен

0 голосов
/ 21 декабря 2009

Вы не передаете свои значения в виде строки запроса. Если бы вы были вашим 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
        }
    }
0 голосов
/ 21 декабря 2009

ваша страница asp.net должна опубликовать ваши данные на второй странице. просто установите для кнопок атрибут PostBackUrl.

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

Я не понимаю, пока вы все усложняете. Когда пользователь нажимает кнопку, все данные будут отправлены на целевую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...