Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.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 |
будет |