Не работает TextBox
От: Kvazimodo  
Дата: 03.09.04 14:22
Оценка:
Есть на форме некий TextBox multiline
В PageLoad делаю присваивание
tb_Add_6.Text="всякая фигня..."

Потом ручками добиваю еще несколько "фиговых строчек"

И нажимаю на кнопку Submit

В обработчике кнопки проверяю tb_Add_6.Text и там оказывается только "всякая фигня...", а "фиговые строчки" исчезли

Как их найти?

VS 2003 7.1.3008
C#
Не работает TextBox
От: Аноним  
Дата: 03.09.04 14:28
Оценка:
Потом ручками добиваю еще несколько "фиговых строчек"

В каком месте?




данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Не работает TextBox
От: PawnHunter  
Дата: 03.09.04 14:32
Оценка:
Здравствуйте, Kvazimodo, Вы писали:

K>Есть на форме некий TextBox multiline

K>В PageLoad делаю присваивание
K>
K>Потом ручками добиваю еще несколько "фиговых строчек"

K>И нажимаю на кнопку Submit


K>В обработчике кнопки проверяю tb_Add_6.Text и там оказывается только "всякая фигня...", а "фиговые строчки" исчезли


K>Как их найти?


K>VS 2003 7.1.3008

K>C#

Сам же в PageLoad говоришь tb_Add_6.Text="всякая фигня..."


if (!IsPostBack)
{
    tb_Add_6.Text="всякая фигня...";
}
Re: Не работает TextBox
От: Kvazimodo  
Дата: 03.09.04 14:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Потом ручками добиваю еще несколько "фиговых строчек"

А>
А>В каком месте?

В браузере. Грубо говоря пользователь вводит.


А>
данное сообщение получено с www.gotdotnet.ru

А>ссылка на оригинальное сообщение
Re[2]: Не работает TextBox
От: Kvazimodo  
Дата: 03.09.04 14:49
Оценка:
Здравствуйте, PawnHunter, Вы писали:


PH>Сам же в PageLoad говоришь tb_Add_6.Text="всякая фигня..."



PH>
PH>if (!IsPostBack)
PH>{
PH>    tb_Add_6.Text="всякая фигня...";
PH>}
PH>


Виноват, забыл про постбэк.

Но НЕ помогло.

"всякая фигня..." так и остаётся.

Кстати, если "всякая фигня..." тождественно равна null
то "другая фигня, вводимая пользователем" прекрасно запоминается.
Re[3]: Не работает TextBox
От: PawnHunter  
Дата: 03.09.04 15:04
Оценка: +1
Здравствуйте, Kvazimodo, Вы писали:

K>Но НЕ помогло.


Интрэстинг... Показывай код.
Re[3]: Не работает TextBox
От: oRover Украина  
Дата: 05.09.04 14:25
Оценка:
Здравствуйте, Kvazimodo, Вы писали:

K>Виноват, забыл про постбэк.


K>Но НЕ помогло.


K>"всякая фигня..." так и остаётся.


K>Кстати, если "всякая фигня..." тождественно равна null

K>то "другая фигня, вводимая пользователем" прекрасно запоминается.

ты null явно присваиваешь? или по умолчанию считаешь? видимо, при нажатии кнопки что-то переприсваивается.
... << RSDN@Home 1.1.4 @@subversion >>
Re: Не работает TextBox
От: vguzev http://u.pereslavl.ru/~vadim/MCSharp/
Дата: 07.09.04 07:23
Оценка:
Здравствуйте, Kvazimodo, Вы писали:

K>И нажимаю на кнопку Submit


K>В обработчике кнопки проверяю tb_Add_6.Text и там оказывается только "всякая фигня...", а "фиговые строчки" исчезли


K>Как их найти?


Это известный баг ASP.Net. Иногда в Page_Load некоторые свойства текстовых полей не доступны.
Обойти это можно лишь явной инициализацией значений TextBox'а в начале Page_Load'а. Например так:
protected System.Web.UI.WebControls.TextBox txtField1;

private void Page_Load(object sender, System.EventArgs e)
{
 // Initializing
 this.txtField1.Text = Request.Params [this.UniqueID + ":txtField1"];
 // ...
 this.txtField1.Text += "всякая фигня"; 
}

Надеюсь, поможет... сам когда-то пол дня потратил, пока выяснил в чём дело...
Вадим Б. Гузев
http://u.pereslavl.ru/~vadim/MCSharp/
Re[2]: Не работает TextBox
От: Gollum Россия  
Дата: 07.09.04 07:29
Оценка:
Здравствуйте, vguzev, Вы писали:

V>Это известный баг ASP.Net.

Можно увидеть его описание где-нибудь? А то "мужики-то не знают!"

V>Иногда в Page_Load некоторые свойства текстовых полей не доступны.

При каких условиях? Как повторить? В чем причина такого поведения?

V>Надеюсь, поможет... сам когда-то пол дня потратил, пока выяснил в чём дело...

Так в чем было дело?
Это в голове у него перекос — параллакс...
Eugene Agafonov on the .NET

Re[3]: Не работает TextBox
От: vguzev http://u.pereslavl.ru/~vadim/MCSharp/
Дата: 07.09.04 07:58
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Здравствуйте, vguzev, Вы писали:


V>>Это известный баг ASP.Net.

G>Можно увидеть его описание где-нибудь? А то "мужики-то не знают!"

V>>Иногда в Page_Load некоторые свойства текстовых полей не доступны.

G>При каких условиях? Как повторить? В чем причина такого поведения?

Я не выяснял почему это происходит... просто потому, что быстро выяснил (с помощью дебагера), как это обойти
Тогда нам показалось, что это дефект MasterPages, который мы юзали в качестве темплейтной основы для нашего сайта...
Потом нашлись примеры, у которых были те же симптомы, хотя они и не юзали MasterPages... отсюда и вывод, что баг в ASP.Net...

V>>Надеюсь, поможет... сам когда-то пол дня потратил, пока выяснил в чём дело...

G>Так в чем было дело?

Параметры нормально передавались в форму, но биндились к TextBox'ам только после Page_Load'а, т.е. они были доступны уже в обработчиках событий.
В принципе, это правильно с точки зрения идеологии ASP.Net — вся инициализация должна производиться в Page_Load,
а обработка событий (например, нажатия кнопки) должна производиться в обработчиках событий (как это ни банально
Вадим Б. Гузев
http://u.pereslavl.ru/~vadim/MCSharp/
Re[4]: Не работает TextBox
От: Gollum Россия  
Дата: 07.09.04 08:21
Оценка:
Здравствуйте, vguzev, Вы писали:

V>Я не выяснял почему это происходит... просто потому, что быстро выяснил (с помощью дебагера), как это обойти

V>Тогда нам показалось, что это дефект MasterPages, который мы юзали в качестве темплейтной основы для нашего сайта...
V>Потом нашлись примеры, у которых были те же симптомы, хотя они и не юзали MasterPages... отсюда и вывод, что баг в ASP.Net...

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

V>Параметры нормально передавались в форму, но биндились к TextBox'ам только после Page_Load'а, т.е. они были доступны уже в обработчиках событий.


Очень странно, дерево контролов формируется до Page_Load, все должно быть инициализированно. Видимо, в консерватории надо что-то править.
Ежели череп прогрызла мышь — время забыть о былом
Eugene Agafonov on the .NET

Re[4]: Не работает TextBox
От: Аноним  
Дата: 07.09.04 08:47
Оценка:
Очень странно, дерево контролов формируется до Page_Load, все должно быть инициализированно. Видимо, в консерватории надо что-то править.

Вообщето не всегда, можно и в Page_Load и после

Если при предышем постбаке контрол был на пререндере и при текушей инициализации страницы он есть в Page_Load и имеет тот же ID его состояние будет восстановлено.


P. S. Нет тут никакого бага, давайте весь код.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[5]: Не работает TextBox
От: Gollum Россия  
Дата: 07.09.04 09:18
Оценка:
Здравствуйте, Евгений Веприков, Вы писали:

ЕВ>Вообщето не всегда, можно и в Page_Load и после

Естественно, я имел в виду статическое дерево.

ЕВ>P. S. Нет тут никакого бага, давайте весь код.

+1
По всей Смоленщине нет кокаина — это временный кризис сырья
Eugene Agafonov on the .NET

Re[2]: Не работает TextBox
От: Kvazimodo  
Дата: 07.09.04 10:19
Оценка:
Здравствуйте, vguzev, Вы писали:

V>Это известный баг ASP.Net. Иногда в Page_Load некоторые свойства текстовых полей не доступны.

V>Обойти это можно лишь явной инициализацией значений TextBox'а в начале Page_Load'а. Например так:
V>
V>protected System.Web.UI.WebControls.TextBox txtField1;

V>private void Page_Load(object sender, System.EventArgs e)
V>{
V> // Initializing
V> this.txtField1.Text = Request.Params [this.UniqueID + ":txtField1"];
V> // ...
V> this.txtField1.Text += "всякая фигня"; 
V>}
V>

V>Надеюсь, поможет... сам когда-то пол дня потратил, пока выяснил в чём дело...

В чём причина выяснить не успел.
В понедельник машину перегрузил и неприятности исчезли.
Re[5]: Не работает TextBox
От: Kvazimodo  
Дата: 07.09.04 10:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>P. S. Нет тут никакого бага, давайте весь код.




private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            try
            {
                mode=int.Parse(Request.QueryString.Get("mode"));
            }
            catch (Exception e1)
            {
                Response.Redirect("Error.aspx?code=-3");
            }

            if (!IsPostBack)
            {
                DataAccess.Filling();
                int command;
                if (Request.QueryString.Get("command")==null)
                {
                    Response.Redirect("Error.aspx?code=-3");
                }
                else
                {
                    command=int.Parse(Request.QueryString.Get("command"));
                    switch (command)
                    {
                        case 1: Add_Manufacturer(1,"Manf"); break;
                        case 2: Add_Manufacturer(1,"All"); break;
                        case 3: Add_license(1); break;
                        case 4: Add_license_Opt(1); break;
                    }
                }
            }
        }



private void btn_Add_Click(object sender, System.EventArgs e)
        {
            switch (btn_Add.CommandArgument)
            {
                case "Manf":
                    Add_Manufacturer(2,""); break;
                case "License":
                    Add_license(2); break;
                case "License_Opt":
                    Add_license_Opt(2); break;
            }
            
        }



public void Add_Manufacturer(int code, string md)
        {
            btn_Add.CommandArgument="Manf";
            if (code==1) Visible_Add_Fields(md);
            else
            {
                if (mode==1)
                {
                    DataAccess.sqlCom_Add_Manufacturer.Parameters["@manf"].Value=tb_Add_1.Text;
                    DataAccess.sqlCom_Add_Manufacturer.Parameters["@category"].Value=tb_Add_2.Text;
                    DataAccess.sqlCom_Add_Manufacturer.Parameters["@ProductLine"].Value=tb_Add_3.Text;
                    DataAccess.sqlCom_Add_Manufacturer.Parameters["@Model"].Value=tb_Add_4.Text;
                    DataAccess.sqlCom_Add_Manufacturer.Parameters["@version"].Value=tb_Add_5.Text;
                    DataAccess.sqlCom_Add_Manufacturer.Parameters["@full"].Value=tb_Add_6.Text;
                    DataAccess.sqlCom_Add_Manufacturer.Prepare();

                    try 
                    {
                        DataAccess.sqlCon.Open();
                        DataAccess.sqlCom_Add_Manufacturer.ExecuteNonQuery();
                        DataAccess.sqlCon.Close();
                        Redirect();
                    }
                    catch (Exception e1) 
                    {
                        Response.Write (e1.Message);
                    }
                }
                else
                {
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@category"].Value=tb_Add_2.Text;
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@ProductLine"].Value=tb_Add_3.Text;
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@Model"].Value=tb_Add_4.Text;
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@version"].Value=tb_Add_5.Text;
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@full"].Value=tb_Add_6.Text;


                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@manf_id"].Value=Session["manf_id_edit"].ToString();
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@manf"].Value=tb_Add_1.Text;
                    DataAccess.sqlCom_Update_Manufacturer.Parameters["@id"].Value=Session["manf_desc_id"].ToString();

                    try 
                    {
                        DataAccess.sqlCon.Open();
                        DataAccess.sqlCom_Update_Manufacturer.ExecuteNonQuery();
                        DataAccess.sqlCon.Close();
                    }
                    catch (Exception e1) 
                    {
                        Response.Write (e1.Message);
                    }
                    Redirect();
                }
            }
        }


Жирным выделено место, где значение переменной было неправильным.
Re[6]: Не работает TextBox
От: mogadanez Чехия  
Дата: 07.09.04 10:46
Оценка:
Здравствуйте, Kvazimodo, Вы писали:

K>
 if (!IsPostBack)
            {
                DataAccess.Filling();

K>


а что происходит в этой строке?
... << RSDN@Home 1.1.3 stable >>
Re[7]: Не работает TextBox
От: Kvazimodo  
Дата: 08.09.04 07:48
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, Kvazimodo, Вы писали:


K>>
M> if (!IsPostBack)
M>            {
M>                DataAccess.Filling();

K>>


M>а что происходит в этой строке?


Заполняется dataset
Re[7]: Не работает TextBox
От: Аноним  
Дата: 08.09.04 08:09
Оценка:
#Имя: -=???=-
А где работа с TexBox в Page_Load? И еже с ним "известный баг" ASP.NET?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[8]: Не работает TextBox
От: Gollum Россия  
Дата: 09.09.04 04:23
Оценка:
Здравствуйте, Евгений Веприков, Вы писали:

ЕВ>А где работа с TexBox в Page_Load? И еже с ним "известный баг" ASP.NET?


Так это не он про баг писал
He's taking the preventive measures, It must have been too late
Eugene Agafonov on the .NET

Re[3]: Не работает TextBox
От: deviv  
Дата: 09.09.04 08:05
Оценка:
Здравствуйте, Kvazimodo, Вы писали:

K>В чём причина выяснить не успел.

K>В понедельник машину перегрузил и неприятности исчезли.
K>

А какая операционка была? Случайно не XP?

Мне приходилось сталкиваться с такой ситуацией на XP:
После того как Web приложение поднялось, иногда факт того,
что исходный код приложения изменился и следует приложение перезапустить почему-то игнорировался.

В Вашем случае — первый вариант кода был с ошибкой (нет условия IsPostBack), исправленный вариант не загрузился.
(Самое сабой это только мое предположение)

Самый простой способ как это вылечить — убить рабочий процесс ASP.NET, он вроде aspnet_wp называется на XP.

На 2003 сервере с такой ситуацией не разу не сталкивался. На других операционнах не тестировал на предмет этого бага.
... << RSDN@Home 1.1.4 beta 2 >>
WBR,
Влад Волосюк
Re[4]: Не работает TextBox
От: Kvazimodo  
Дата: 10.09.04 10:00
Оценка:
Здравствуйте, deviv, Вы писали:

D>Здравствуйте, Kvazimodo, Вы писали:


K>>В чём причина выяснить не успел.

K>>В понедельник машину перегрузил и неприятности исчезли.
K>>

D>А какая операционка была? Случайно не XP?


D>Мне приходилось сталкиваться с такой ситуацией на XP:

D>После того как Web приложение поднялось, иногда факт того,
D>что исходный код приложения изменился и следует приложение перезапустить почему-то игнорировался.

D>В Вашем случае — первый вариант кода был с ошибкой (нет условия IsPostBack), исправленный вариант не загрузился.

D>(Самое сабой это только мое предположение)

D>Самый простой способ как это вылечить — убить рабочий процесс ASP.NET, он вроде aspnet_wp называется на XP.


D>На 2003 сервере с такой ситуацией не разу не сталкивался. На других операционнах не тестировал на предмет этого бага.


2000 Server.Перезагрузка помогла. Видимо причины теже, что и у Вас с XP
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.