Модераторы: gambit
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> DropDownList.SelectedIndex = -1 
:(
    Опции темы
Idsa
Дата 13.7.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



В MSDN сказано:
Цитата

If you set the SelectedIndex property of a DropDownList control to -1, the control resets the value to 0, because the DropDownList control always has a list item selected.


Однако в Рефлекторе ничего подобного я не нашел:
Код

public virtual int SelectedIndex
{
    get
    {
        for (int i = 0; i < this.Items.Count; i++)
        {
            if (this.Items[i].Selected)
            {
                return i;
            }
        }
        return -1;
    }
    set
    {
        if (value < -1)
        {
            if (this.Items.Count != 0)
            {
                throw new ArgumentOutOfRangeException("value", SR.GetString("ListControl_SelectionOutOfRange", new object[] { this.ID, "SelectedIndex" }));
            }
            value = -1;
        }
        if (((this.Items.Count != 0) && (value < this.Items.Count)) || (value == -1))
        {
            this.ClearSelection();
            if (value >= 0)
            {
                this.Items[value].Selected = true;
            }
        }
        else if (this._stateLoaded)
        {
            throw new ArgumentOutOfRangeException("value", SR.GetString("ListControl_SelectionOutOfRange", new object[] { this.ID, "SelectedIndex" }));
        }
        this.cachedSelectedIndex = value;
    }
}


Ну и где же "the control resets the value to 0"?

Может, имеется в виду, что при рендеринге по умолчанию будет выставлено selected для нулевого элемента...


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Mymik
Дата 14.7.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Idsa, чувак, я понимаю что ты хочешь показать всем какой ты крутой и модный программист, но если бы у тебя было хотя бы доля интеллекта или логики реального программиста, который живет этим и программирует(а не задает вопросы), то ты бы посмотрел бы метод  this.ClearSelection(); посмотрел что там скидываются все выделения в false и дальше если value>=0 то устанавливается уже выбранный элемент, ВСЕ, тут больше ничего не происходит. Т.е. на клиент приходит DropDownList без выделенных элементов И потому как пишут браузеры нормальные люди, которые понимаю программирование, то по умолчанию в <select><option></option></select> выбирается первый <option></option> из коллекции присутствующих внутри.

P.S. не задавай вопросы, в которых ты даже не соизволил хотя бы чуть-чуть разобраться


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Idsa
Дата 14.7.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Mymik @  14.7.2007,  14:11 Найти цитируемый пост)
Idsa, чувак, я понимаю что ты хочешь показать всем какой ты крутой и модный программист, но если бы у тебя было хотя бы доля интеллекта или логики реального программиста, который живет этим и программирует(а не задает вопросы), то ты бы посмотрел бы метод  this.ClearSelection();

Спасибо за комплимент (конечно же, я просмотрел этот метод).

Цитата(Mymik @  14.7.2007,  14:11 Найти цитируемый пост)
там скидываются все выделения в false и дальше если value>=0 то устанавливается уже выбранный элемент, ВСЕ, тут больше ничего не происходит.

Вот именно! Ничего больше не происходит. И если бы ты прежде, чем нести всякий вздор, внимательно прочитал вопрос:
Цитата(Idsa @  13.7.2007,  14:47 Найти цитируемый пост)
Ну и где же "the control resets the value to 0"?
, то понял бы, что именно это меня и смущает.

Цитата(Mymik @  14.7.2007,  14:11 Найти цитируемый пост)
 Т.е. на клиент приходит DropDownList без выделенных элементов И потому как пишут браузеры нормальные люди, которые понимаю программирование, то по умолчанию в <select><option></option></select> выбирается первый <option></option> из коллекции присутствующих внутри.

Это я тоже упомянул:
Цитата(Idsa @  13.7.2007,  14:47 Найти цитируемый пост)
Может, имеется в виду, что при рендеринге по умолчанию будет выставлено selected для нулевого элемента...


P. S. Если у тебя плохое настроение, не нужно его распространять на форуме, лучше промолчи, ну зачем же так позориться?!


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Mymik
Дата 14.7.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(Idsa @  13.7.2007,  14:47 Найти цитируемый пост)
Может, имеется в виду, что при рендеринге по умолчанию будет выставлено selected для нулевого элемента... 

Вот черт, не заметил. Эх, лажанулся, ну да ладно.

Но все равно, почему ты не думаешь логически. Ну даже если не думать логически, ну хотя бы запусти пример. Такое чувство, что ты только читаешь MSDN и не пишешь ничего. Вот это и раздражает меня, я ненавижу людей который начинают задавать вопросы даже не разбираясь в них сами. Если тебе не нравиться то что генерируется, ну так запусти тогда статический пример, посмотри документацию на тот элемент html разметки в который рендириться asp.net контрол.

Да, и кстати, на самом деле selected не выставляется для нулевого элемента(посмотри в сгенерированный html код и там будет этого свойства). Он просто отсутствует. А браузер уже подбирает первый попавшийся элемент как выбранный.

P.S. частично забираю свои слова обратно, но не все.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Idsa
Дата 14.7.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Mymik @  14.7.2007,  17:17 Найти цитируемый пост)
P.S. частично забираю свои слова обратно, но не все.

Уже хорошо. Однако твои претензии мне совершенно непонятны smile

Цитата(Mymik @  14.7.2007,  17:17 Найти цитируемый пост)
Но все равно, почему ты не думаешь логически. Ну даже если не думать логически, ну хотя бы запусти пример. Такое чувство, что ты только читаешь MSDN и не пишешь ничего. Вот это и раздражает меня, я ненавижу людей который начинают задавать вопросы даже не разбираясь в них сами. Если тебе не нравиться то что генерируется, ну так запусти тогда статический пример, посмотри документацию на тот элемент html разметки в который рендириться asp.net контрол.

Я указал тебе, что ты неправильно понял вопрос... а ты продолжаешь писать какие-то общие фразы весьма весьма сомнительного содержания.

А указанный мною "ляп" так никто и не прокомментировал!
Объясню, почему меня это так задело. Как известно, в DropDownList прежде, чем выставлять Selected=true для одного из Item'ов, нужно снять выделение с другого. Если быть более точным, то главное, чтобы при рендеринге не было выделено более 1 элемента, т. к. там происходит проверка.
Для "сброса" выделения можно использовать следующий код:
Код

ListItem listItem = dropDownList.SelectedItem;
if (listItem != null)
 listItem.Selected = false;

Однако, просмотрев в рефлекторе свойство SelectedIndex, я решил, что "сброса" выделения можно добиться присвоением SelectedIndex значения -1. Этот код уже занимает не 3, а 1 строчку smile, что меня в общем-то и привлекло.
Однако затем я натолкнулся в MSDN на это замечание:
Цитата(Idsa @  13.7.2007,  14:47 Найти цитируемый пост)
If you set the SelectedIndex property of a DropDownList control to -1, the control resets the value to 0, because the DropDownList control always has a list item selected.

Оно меня смутило, потому что: 1. Такого поведения в рефлекторе я не заметил 2. Если MSDN прав, то для "сброса" выделения SelectedIndex использовать нельзя.

Mymik, надеюсь, теперь ты возьмешь назад свои необоснованные обвинения и наезды:
Цитата(Mymik @  14.7.2007,  14:11 Найти цитируемый пост)
P.S. не задавай вопросы, в которых ты даже не соизволил хотя бы чуть-чуть разобраться



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Mymik
Дата 15.7.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(Idsa @  14.7.2007,  17:43 Найти цитируемый пост)
а ты продолжаешь писать какие-то общие фразы весьма весьма сомнительного содержания.

с этого места поподробнее, какие кажутся тебе сомнительного содержания ???

Цитата(Idsa @  14.7.2007,  17:43 Найти цитируемый пост)
1. Такого поведения в рефлекторе я не заметил

Пойди по другому пути и взгляди дальше чем серверный код, ты увидишь, что когда рендирится  DropDownList с выделенным элементом, то в соответственный option имеет selected. Что говорит браузеру который отображает код, мол вот option и он должен быть выбран по умолчанию в данном select'е.
Когда же ты сбрасываешь все выделения, то браузер сам выбирает какой элемент ему выбрать по умолчанию. Т.е. к нему приходит код, select'а который не содержит ни один option с selected записью. И по умолчанию выбирается первый элемент из коллекции option. Ну вот как в C# есть безопасные значение полей, так и у браузеров есть безопасное значение select.
 
Цитата(Idsa @  14.7.2007,  17:43 Найти цитируемый пост)
2. Если MSDN прав, то для "сброса" выделения SelectedIndex использовать нельзя.

Твоя же цитата говорит о том, что у select"а на клиенте должен быть выбран хотя бы один элемент. И этот элемент является элементом по умолчанию
Цитата(Idsa @  13.7.2007,  14:47 Найти цитируемый пост)
the control resets the value to 0, because the DropDownList control always has a list item selected.

Если тебе в это не вериться, то напиши простой код, просто html код и запусти его
Код

    <select>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>

Этот код это срендереный DropDownList.SelectedIndex = -1
У него нет ни единого выбора, и тем не менее в нем высвечивается "1" а значит элемент выбран.
Вот именно потому люди когда делают DropDownList с обязательным выбором, они всегда добавляют пустой элемент, который свидетельствует о том, что пользователь не соизволил выбрать ни один из вариантов. И в JS проверяют выбранный вариант.

Цитата(Idsa @  14.7.2007,  17:43 Найти цитируемый пост)
Mymik, надеюсь, теперь ты возьмешь назад свои необоснованные обвинения и наезды:
Не-а, я отвечаю за свои слова. И ты так и не запустил пример с срендареным примером DropDownList без выбраных элементов (DropDownList.SelectedIndex = -1) и с выбранным элементов и не посмотрел чем они отличаются. 

P.S. вот так всегда, большенство web-developer'ов твоего возраста страдают мыслью о том, что дальше сервера их ничего не должно волнует -- так мы и получаем сайты только под IE, да и то, там тоже могут не работать и нагрузки на сервер страшные. А ведь не все asp.net должен делает... нужно еще и html пользоваться и CSS и JS'ом. :о(.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Idsa
Дата 15.7.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Mymik, если честно, то твои посты похожи на бред сумасшедшего. Такое ощущение, что тебе непременно нужно на кого-то наехать, даже несмотря на отсутствие повода. Твои множественные выводы о моей никчемности, о моем неумении пользоваться CSS и JS и т. д. и т. п. без единого аргумента - это что-то.

Итак, если быть кратким, то суть твоих постов сводится к следующему: 
Цитата(Mymik @  15.7.2007,  10:47 Найти цитируемый пост)
Когда же ты сбрасываешь все выделения, то браузер сам выбирает какой элемент ему выбрать по умолчанию. Т.е. к нему приходит код, select'а который не содержит ни один option с selected записью. И по умолчанию выбирается первый элемент из коллекции option.

Теперь сравним с цитатой:
Цитата(Idsa @  14.7.2007,  17:43 Найти цитируемый пост)
If you set the SelectedIndex property of a DropDownList control to -1, the control!!! resets the value to 0, because the DropDownList control always has a list item selected.

В цитате говорится, что при присвоении SelectedIndex = -1 контрол сам присвоит ему значение 0. Заметь, контрол, а не браузер!

Цитата(Mymik @  15.7.2007,  10:47 Найти цитируемый пост)
с этого места поподробнее, какие кажутся тебе сомнительного содержания ???

Мне кажутся сомнительными твои обвинения: 1. ты обвинял меня в том, что я не разобрался с вопросом (я это опроверг) 2. ты обвинял меня в отсутствии логики (опять ты оказался неправ) 3. ты обвинял меня в неумении пользоваться JS и CSS (и опять оказался неправ). Все твои обвинения не имеют под собой никакой почвы, кроме, пожалуй, больной фантазии.

Извинился бы уже, да и шел с миром.

P. S. Пожалуйста, если захочешь написать ответ, на сей раз внимательно ознакомься с моими аргументами!

Это сообщение отредактировал(а) Idsa - 15.7.2007, 13:57


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
mr.DUDA
Дата 15.7.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 5
Всего: 232




 ! 
mr.DUDA
Mymik и Idsa, прошу выяснение личных отношений переместить из публичного топика в ПМ.


Тему пока закрываю.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.