Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переменная класса / 13 сообщений из 13, страница 1 из 1
29.04.2005, 13:15
    #33042725
Vladimir1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
есть переменная класса
Protected Code as Int32

и есть пара процедур.
В одной из них этой переменной присваивается некое значение.
В другой - (обработчик события onclick кнопки на веб форме) проверяем
if Code=0 then exit sub и т.д.

Так вот, эта переменная после нажатия кнопки всегда равна нулю.
А происходит это так как происходит инициализация заново веб формы и соответственно Protected Code as Int32 делает Code равной нулю.

Вопрос: как сделать чтобы переменная хранила свое значения до закрытия формы или до явного ее изменения??

Помагите новичку please!

Спасибо!
...
Рейтинг: 0 / 0
29.04.2005, 13:20
    #33042739
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
смотри в сторону IsPostBack и Load/Save ViewState
...
Рейтинг: 0 / 0
29.04.2005, 13:22
    #33042750
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
пиши ее во viewstate...
туда:
ViewState["tmp"] = Code;

обратно:
Code = (Int32)ViewState["tmp"];

учти, вьюстейт - CaseSensitive;

с уважением...
...
Рейтинг: 0 / 0
29.04.2005, 13:39
    #33042808
Vladimir1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
Sam Andrewsпиши ее во viewstate...
туда:
ViewState["tmp"] = Code;

обратно:
Code = (Int32)ViewState["tmp"];

учти, вьюстейт - CaseSensitive;

с уважением...

Огромное спасибо,

Не сочтите за наглость еще один небольшой вопросик.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
        Dim a As Integer
        Code = CType(e.Item.Cells( 1 ).Text, Integer)
        ViewState("CodeKgt")=Code
        Dim con As New SqlClient.SqlConnection(ConStr)
        con.Open()
        Dim sqlCom As New SqlClient.SqlCommand("SELECT * FROM Справочник_Юр_лиц where Код_Контрагента =" & Code, con)
        Dim rd As SqlClient.SqlDataReader = sqlCom.ExecuteReader

        Try
            rd.Read()
            a = rd( 0 )
            Try
                txtkgt.Text = rd( 1 )
            Catch
            End Try
            Try
                txtINN.Text = rd( 2 )
            Catch
            End Try

            и т.д.  15  раз
   catch
   end try 

Поля в спрвочнике могут быть NULL

Вопрос: можно как-нибудь это сделать по короче или по другому совсем, чето непойму как по другому обрабатывать NULL значения?



Спасибо
...
Рейтинг: 0 / 0
29.04.2005, 13:56
    #33042860
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
Код: plaintext
1.
2.
3.
4.
if(rd( 0 ) != DBNull.Value)
  txtkgt.Text = rd( 0 );
else
  txtkgt.Text = "";

с уважением...
...
Рейтинг: 0 / 0
29.04.2005, 13:58
    #33042867
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
а можешь еще так сделать:

SELECT ISNULL (field_from_db, '')

тогда Null возвращаться не будет...

с уважением...
...
Рейтинг: 0 / 0
29.04.2005, 14:06
    #33042890
Vladimir1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
Большое СПАСИБО.
...
Рейтинг: 0 / 0
29.04.2005, 15:45
    #33043162
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
дополню про ViewState. Сохранять и загружать состояние лучше в перегруженных процедурах SaveViewState и LoadViewState, дабы не запутаться
подробнее в msdn, ссылки можно найти здесь
...
Рейтинг: 0 / 0
01.05.2005, 19:42
    #33044547
Str
Str
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
Vladimir1234Вопрос: как сделать чтобы переменная хранила свое значения до закрытия формы или до явного ее изменения??


Есть еще прикольный способ - простой, но не всем нравится.
Создаем на форме Label или TextBox и делаем их невидимыми (Visible=false)
После этого присваиваем, считываем и т.п. в любое время без всяких сессий.
...
Рейтинг: 0 / 0
03.05.2005, 09:46
    #33045429
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
что значит не всем нравится? =)
это было одно из решений передачи параметров в классическом asp.., пока не появился viewstate...
при таком способе а) значение видно пользователю, б) все равно пишется во viewstate, если только прямо не запретить элементу это делать...

с уважением...
...
Рейтинг: 0 / 0
03.05.2005, 14:31
    #33046233
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
StrСоздаем на форме Label или TextBox и делаем их невидимыми (Visible=false)
После этого присваиваем, считываем и т.п. в любое время без всяких сессий.что бы вас не назвали ламером - ни когда так не делайте
как правильно заметил Sam Andrews, сохранение данных при таком подходе осуществляется через тот же механизм ViewState
...
Рейтинг: 0 / 0
04.05.2005, 11:36
    #33047657
gerss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
profil StrСоздаем на форме Label или TextBox и делаем их невидимыми (Visible=false)
После этого присваиваем, считываем и т.п. в любое время без всяких сессий.что бы вас не назвали ламером - ни когда так не делайте
как правильно заметил Sam Andrews, сохранение данных при таком подходе осуществляется через тот же механизм ViewState

Не совсем согласен с "никогда". В списке HtmlСontrols есть контрол Hidden. Если его положить на форму и сделать серверным - ИМХО очень простой и удобный способ передавать нечто между серверным и клиентским (javascript) кодом. Так что "Никогда не говори "Никогда"" ( (с) не мой :) )
...
Рейтинг: 0 / 0
06.05.2005, 15:42
    #33053090
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменная класса
gerss profil StrСоздаем на форме Label или TextBox и делаем их невидимыми (Visible=false)
После этого присваиваем, считываем и т.п. в любое время без всяких сессий.что бы вас не назвали ламером - ни когда так не делайте
как правильно заметил Sam Andrews, сохранение данных при таком подходе осуществляется через тот же механизм ViewState

Не совсем согласен с "никогда". В списке HtmlСontrols есть контрол Hidden. Если его положить на форму и сделать серверным - ИМХО очень простой и удобный способ передавать нечто между серверным и клиентским (javascript) кодом. Так что "Никогда не говори "Никогда"" ( (с) не мой :) )
ну это уже подмена понятий. Hidden для этого и создан, и механизм ViewState организован как раз с применением hidden-полей.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переменная класса / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]