Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / SelectedIndex (part III) / 2 сообщений из 2, страница 1 из 1
15.11.2005, 19:10
    #33379999
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SelectedIndex (part III)
Для того, что бы заставить пользователя действительно осознанно что-либо выбрать в DropDowList'е - добавляю еще пустое значение, 4 example:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if(!IsPostBack)
{
tmpListItem=new ListItem("");
DDLSmth.Items.Add(tmpListItem);

tmpListItem=new ListItem("Line# 1","1");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 2","2");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 3","3");
DDLSmth.Items.Add(tmpListItem);
}
На клиенте, при выборе, по onchange удаляю options с value=="". Понадобилось страничку вернуть клиенту еще раз и тут, ессесно, вылезли грабли: на предмет несоответствия реального содержимого в DropDowList'е (который уже вернулся от клиента) и тем, что получается после PageLoad'а. Если наполнять DropDowList в PageLoad'е в if(!IsPostBack) (как показано выше), то, когда нахлопывается ViewState, добавляется уже ненужная пустая строка. Если попробовать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tmpListItem=new ListItem("Line# 1","1");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 2","2");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 3","3");
DDLSmth.Items.Add(tmpListItem);
if(!IsPostBack)
{
tmpListItem=new ListItem("");
DDLSmth.Items.Insert( 0 ,tmpListItem);
}
ессесно, после каждого PostBack'а список растет, но, что характерно и пустая строка тоже добавляется...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DDLSmth.Items.Clear();
tmpListItem=new ListItem("Line# 1","1");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 2","2");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 3","3");
DDLSmth.Items.Add(tmpListItem);
if(!IsPostBack)
{
tmpListItem=new ListItem("");
DDLSmth.Items.Insert( 0 ,tmpListItem);
}
решает проблему с пустой строкой. Но тогда получается несоответствие между выбранным клиентом значением и возвращенным после PostBack'а.
Как можно красиво, элеганто и по-людськи забороть сие?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
15.11.2005, 19:27
    #33380030
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SelectedIndex (part III)
Заборол так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
if(!IsPostBack)
{
tmpListItem=new ListItem("");
DDLSmth.Items.Add(tmpListItem);

tmpListItem=new ListItem("Line# 1","1");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 2","2");
DDLSmth.Items.Add(tmpListItem);
tmpListItem=new ListItem("Line# 3","3");
DDLSmth.Items.Add(tmpListItem);
}
else
{
if((tmpListItem=DDLSmth.Items.FindByText(""))!=null)
DDLSwitch.Items.Remove(tmpListItem);
}

Но, м.б. есть еще какие либо варианты?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / SelectedIndex (part III) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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