Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Web приложения > Проблема с объектами , уничтожается ли содержимое при выходи из фунции????


Автор: dozi-ros 26.11.07, 15:26
Помогите пожалуйст ас ASP не работал не пойму в чем дело .Мне надо написать следующее , пользовтель открывает файл файл закидывается на сержвер открывается для реадактирование в удобном интерфайся он редактирует и обратно сохраняет себе на диск.Проблема в том что объект который использовался в одной фунции становится пустым в другой ,каким образом можно работать с обьъектом который был инициализирова в другой фунции?????

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    //обявлен двумерный массив текстбоксов  в начале кода .
      TextBox[,] box;
     
     
    //затем есть кнопка open
    protected void Open_Click(object sender, EventArgs e)
    {
    //тут открывается файл с него читается информация и закидывается в эти текстбоксы которые тутже динамически создаются.
     box = new TextBox[count, 19];
    for(i=0;i<count;i++)
    for (j = 0; j < 19; j++)
     {
                                
    box[i, j] = new TextBox();
       }
     
    //затем в них закидывается информация из файла потом мне нужно после редактирования этой информации снова сохранить ее в файл
    }
     
    потом у меня кнопка save  которая сохраняет изменения но проблема в том что box[i,j] в ней оказываются пустыми не содержат никакие данные не старые и не измененные??
     
    protected void SAVE_Click(object sender, EventArgs e)
          {
    box[i,j].Text-ничего тут не содержит хотя из файла все было закинуто в них и в сайте это видно .
     
    }

помогите пожалуйста понять в чем дело , почему в объект ничего нет ?? при входоде из фунции Open?

Автор: UncleBob 26.11.07, 17:20
Дело в том, что объект существует только в момент обработки запроса. После того, как страница отправлена клиенту, все объекты класса страницы уничтожаются.

Автор: dozi-ros 26.11.07, 17:25
Спасибо за ответ, а что можно использовать??

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

Автор: UncleBob 26.11.07, 17:30
Цитата dozi-ros @
Дело в том что мне сперва надо прочитать из файла данные и закинуть их в тексбоксы я это делаю после чего пользователь может отредактировать их и мне надо получить обратно значение этих тексбоксов чтоб снова сохранить в файл.

Значения текстбоксов получаешь в OnLoad и записываешь в файл, а в чем проблема?

Автор: GRIENDERS 26.11.07, 17:43
в Open_Click добавь код для сохранения "информация из файла потом мне нужно после редактирования этой информации снова сохранить ее в файл " в сессии, а в SAVE_Click читай из сессии.
как добавить данные в сессию и потом прочитать, тебе уже подсказали в соседней теме

Автор: dozi-ros 26.11.07, 17:46
Смотри ,сперва пользователь делает browse потом Open когда он нажимает open я считываю из файла по количеству информации в нем динамически создается количество текстбоксов
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     box = new TextBox[count, 19];
    for(i=0;i<count;i++)
    for (j = 0; j < 19; j++)
     {
                                
    box[i, j] = new TextBox();
       }

потом в этой же фунции я в каждую из box[i,j] помещаю текст из файла
теперь ты говоришь если напшисать тут
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    void Page_Load(Object sender, EventArgs e)
          {
    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(Filepath)"))
              {
                    for(.......
     
                 sw.WriteLine(box[i, j].Text);
     
              }
              
     
    }

я попробовал так тоже не получается потому что объект инициализирован в фунции опен а в лоаде в нем ничего нету опять таки

Добавлено
Цитата

в Open_Click добавь код для сохранения "информация из файла потом мне нужно после редактирования этой информации снова сохранить ее в файл " в сессии, а в SAVE_Click читай из сессии.
как добавить данные в сессию и потом прочитать, тебе уже подсказали в соседней теме

я пробовал с сессиями , сессия копирует объект потом я не могу узнать какие изменения были сделаны с данным тексбоксом в фунции Save_Click.
Если испоьзую сессию у меня в этих боксах всегда неизмененные данные какими они были при нажатии на опен такими и остаются

Автор: UncleBob 26.11.07, 18:06
Надо сохранять количество CheckBox'ов во ViewState, потом создавать эти текстбоксы в Page_Init, только не забывать им назначать ID, тогда все будет тип-топ:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    protected void Page_Init (object sender, EventArgs e)
    {
      if (IsPostBack)
      {
        object o = ViewState ["numTextBoxes"];
        if (o != null)
        {
          createTextBoxes ((int)o);
        }
      }
    }
     
    protected void Page_Load (object sender, EventArgs e)
    {
      if (IsPostBack)
      {
        // здесь читаешь данные из текстбоксов
      }
    }
     
    protected void Open_Click(object sender, EventArgs e)
    {
      createTextBoxes (5);
     
      ViewState ["numTextBoxes"] = 5;
    }
     
    void createTextBoxes (int k)
    {
      for (int i=0; i<k; i++)
      {
        TextBox tb = new TextBox ();
        tb.ID = "TextBox" + i.ToString();
        this.Form.Controls.Add (tb);
      }  
    }

Автор: dozi-ros 26.11.07, 23:11
Цитата
Надо сохранять количество CheckBox'ов во ViewState, потом создавать эти текстбоксы в Page_Init, только не забывать им назначать ID, тогда все будет тип-топ:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    protected void Page_Load (object sender, EventArgs e)
    {
      if (IsPostBack)
      {
        // здесь читаешь данные из текстбоксов
     
    [B]
    Извини а как могу тут получить данные из твоего tb?? если напишу tb он ясно что тут будет невидим если сделаю глобальным твой Texbox tb
    и потом попытаюсь сделать тут что то такое tb.Text  то в нем ничего не будет
    [/B]
      }
    }

извини если простой очень вопрос просто я не ас ASP.

пожалуйста приведи пример как мне считать из данных текстбоксов ,зарание благодарю!

Автор: UncleBob 27.11.07, 07:19
Цитата dozi-ros @
то в нем ничего не будет

будет

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)