элементарный вопрос по DropDownList в WebPart....

Dima Freger
Дата: 27.04.2010 01:48:14
Доброго все времени суток!

Подскажите пожалуйста, что я делаю не верно.
Задача проста как веник. 2 DropDownList в одном выбрали что-то в другом изменилося список.
Пишу:


protected override void CreateChildControls() 
{
base.CreateChildControls(); 

ddl_1 = new DropDownList(); 
ddl_1.ID = "ddl_1"; 
ddl_1.AutoPostBack = true; 

ddl_1.Items.Add("A"); 
ddl_1.Items.Add("B"); 
ddl_1.Items.Add("C"); 

ddl_2 = new DropDownList(); 
ddl_2.ID = "ddl_2"; 
ddl_2.Width = 200;
ddl_2.AutoPostBack = true; 

this.Controls.Add(ddl_1); 
this.Controls.Add(ddl_2); 
}


затем


protected override void OnPreRender(EventArgs e) 
{

ddl_2.Items.Clear();

if (ddl_1.Text.Equals("A")) 
{  ddl_2.Items.Add("1"); 
   ddl_2.Items.Add("2"); 
   ddl_2.Items.Add("3"); 
}

if (ddl_1.Text.Equals("B")) 
{ ddl_2.Items.Add("4"); 
  ddl_2.Items.Add("5"); 
   ddl_2.Items.Add("6"); 
}

if (ddl_1.Text.Equals("C")) 
{
   ddl_2.Items.Add("7"); 
   ddl_2.Items.Add("8"); 
   ddl_2.Items.Add("9"); 
}
}


Проще некуда.
Проблем 1: когда в первом DropDownList выбираю то во втором DropDownList меняется все верно. Когда же просто выбираю во втором DropDownList , то идет перегрузка страницы и устанавливается во втором DropDownList в исходное положение в не зависимости от того что я выбрал!

Вопрос как мне удержать то выбранное мной значение???

Проблем 2: вся ента байда у меня в SharePoint.Рядом с этой часть лежит еще часть с документами. Так вот, когда удаляю документ, то идет перезагрузка всей страницы и в обоих DropDownList моих устанавливаются начальные значения!!!!


ПОДСКАЖИТЕ ПОЖАЛУЙСТА ЧТО Я НЕ ВЕРНО ПИШУ ИЛИ НЕ В ТОМ МЕСТЕ!!!!!

Спасибо заранее!
bastad
Дата: 27.04.2010 08:20:14
Так вы сделайте проверку на IsPostback.
Dima Freger
Дата: 28.04.2010 01:30:44
Спасибо за ответ.

я проверил на IsPostback, но мне это мало что дало.
Ведь в зависимости от того что выбрано в первом меняется второе, а его я меняю полностью, т.е. очищаю ивновь заполняю, что и влечет за собой проблемы.

Подскажите а можно для работы использовать сессионные переменные. Т.е. все изменения параметров отражать там и вне зависимости от строки или IsPostback только выставлять то что находится в этих переменных
bastad
Дата: 28.04.2010 10:38:46
Какие проблемы влечет за собой смена в первом dropdown?
подцепитесь в обработчик DropDownList.SelectedIndexChanged += DropDownList_SelectedIndexChanged;
и только тут чистите список по изменившемуся значению, а не каждый раз при создании дочерних контролов.
при создании дочерних, вам самое главное выставить им ID постоянный, тогда у вас будут данные туда возвращаться при постбаке.
Dima Freger
Дата: 30.04.2010 01:20:13
Еще раз спасибо за ответ.

Надо мне просто спокойно разобратьсяс происходящим.....

Просто когда удаляется файл в ШареПоинте приходит постбак и все мои настройки что я делал летят к черту.
Сейчас сделал через сессию. В сессионных переменных, сверно ли это не знаю, но теперь все хранится в сессии и все из нее читается.
bastad
Дата: 30.04.2010 08:54:30
Хозяин барин.