Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.170.183] |
|
Сообщ.
#1
,
|
|
|
Помогите пожалуйст ас ASP не работал не пойму в чем дело .Мне надо написать следующее , пользовтель открывает файл файл закидывается на сержвер открывается для реадактирование в удобном интерфайся он редактирует и обратно сохраняет себе на диск.Проблема в том что объект который использовался в одной фунции становится пустым в другой ,каким образом можно работать с обьъектом который был инициализирова в другой фунции?????
//обявлен двумерный массив текстбоксов в начале кода . 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? |
Сообщ.
#2
,
|
|
|
Дело в том, что объект существует только в момент обработки запроса. После того, как страница отправлена клиенту, все объекты класса страницы уничтожаются.
|
Сообщ.
#3
,
|
|
|
Спасибо за ответ, а что можно использовать??
Добавлено Дело в том что мне сперва надо прочитать из файла данные и закинуть их в тексбоксы я это делаю после чего пользователь может отредактировать их и мне надо получить обратно значение этих тексбоксов чтоб снова сохранить в файл. |
Сообщ.
#4
,
|
|
|
Цитата dozi-ros @ Дело в том что мне сперва надо прочитать из файла данные и закинуть их в тексбоксы я это делаю после чего пользователь может отредактировать их и мне надо получить обратно значение этих тексбоксов чтоб снова сохранить в файл. Значения текстбоксов получаешь в OnLoad и записываешь в файл, а в чем проблема? |
Сообщ.
#5
,
|
|
|
в Open_Click добавь код для сохранения "информация из файла потом мне нужно после редактирования этой информации снова сохранить ее в файл " в сессии, а в SAVE_Click читай из сессии.
как добавить данные в сессию и потом прочитать, тебе уже подсказали в соседней теме |
Сообщ.
#6
,
|
|
|
Смотри ,сперва пользователь делает browse потом Open когда он нажимает open я считываю из файла по количеству информации в нем динамически создается количество текстбоксов
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] помещаю текст из файла теперь ты говоришь если напшисать тут 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. Если испоьзую сессию у меня в этих боксах всегда неизмененные данные какими они были при нажатии на опен такими и остаются |
Сообщ.
#7
,
|
|
|
Надо сохранять количество CheckBox'ов во ViewState, потом создавать эти текстбоксы в Page_Init, только не забывать им назначать ID, тогда все будет тип-топ:
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); } } |
Сообщ.
#8
,
|
|
|
Цитата Надо сохранять количество CheckBox'ов во ViewState, потом создавать эти текстбоксы в Page_Init, только не забывать им назначать ID, тогда все будет тип-топ: protected void Page_Load (object sender, EventArgs e) { if (IsPostBack) { // здесь читаешь данные из текстбоксов [B] Извини а как могу тут получить данные из твоего tb?? если напишу tb он ясно что тут будет невидим если сделаю глобальным твой Texbox tb и потом попытаюсь сделать тут что то такое tb.Text то в нем ничего не будет [/B] } } извини если простой очень вопрос просто я не ас ASP. пожалуйста приведи пример как мне считать из данных текстбоксов ,зарание благодарю! |
Сообщ.
#9
,
|
|
|
Цитата dozi-ros @ то в нем ничего не будет будет |