Я просто хочу ASP.NET DropDownList без выбранного пункта. Установка SelectedIndex к-1 не имеет пользы, до сих пор. Я использую Платформу 3.5 с Ajax, т.е. этот DropDownList в UpdatePanel. Вот то, что я делаю:
protected void Page_Load (object sender, EventArgs e)
{
this.myDropDownList.SelectedIndex = -1;
this.myDropDownList.ClearSelection();
this.myDropDownList.Items.Add("Item1");
this.myDropDownList.Items.Add("Item2");
}
Момент я добавляю элемент в DropDown, его изменениях SelectedIndex в 0 и больше не могу быть установлен на-1 (я пытался назвать SelectedIndex после добавляющих объектов также)... Что я делаю неправильно? Справка муравья ценилась бы!
Пустой в памяти myDropDownList. Объекты. Добавьте добавит новый элемент Listitem внизу при вызове его после выполнения вызова Источника данных/Привязки данных, так используйте myDropDownList. Объекты. Вставьте метод вместо этого, например...
myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();
myDropDownList.Items.Insert(0, new ListItem("Please select", ""));
Добавит, 'Выберите' выпадающий объект к вершине.
И, как упомянуто всегда будет точно один Объект, выбранный в выпадающем (ListBoxes отличаются, я верю), и это принимает значение по умолчанию к лучшему, если ни один явно не выбран.
Я читаю следующее: http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx
Это говорит: Для получения индексного значения выбранного пункта считайте значение свойства SelectedIndex. Индекс основан на нуле. Если ничто не было выбрано, значение свойства-1.
В то же время по http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex (По сравнению с 80) .aspx мы видим:
Используйте свойство SelectedIndex, чтобы программно указать или определить индекс выбранного пункта от управления DropDownList. Объект всегда выбирается в управлении DropDownList. Вы не можете очистить выбор от каждого объекта в списке одновременно.
Возможно-1 допустимо только для получения а не для установки индекса? Если так, я буду использовать Ваш 'патч'.
Возможно установить selectedIndex свойство DropDownList к-1 (т.е. четкий выбор) использование клиентского сценария:
<form id="form1" runat="server">
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Value="A"></asp:ListItem>
<asp:ListItem Value="B"></asp:ListItem>
<asp:ListItem Value="C"></asp:ListItem>
</asp:DropDownList>
<button id="СlearButton">Clear</button>
</form>
<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#СlearButton").click(function()
{
$("#DropDownList1").attr("selectedIndex", -1); // pay attention to property casing
})
$("#ClearButton").click();
})
</script>
Я вполне уверен, что выпадающий должен иметь некоторый выбранный объект; я обычно добавляю пустой элемент списка
this.myDropDownList. Объекты. Добавьте ("");
Как мой первый элемент списка, и продолжаются соответственно.
selectedIndex может только быть-1, когда управление является первым initalised и в наборе нет никаких объектов.
Не возможно не иметь никакого объекта, выбранного в веб-выпадающем списке, как Вы были бы на WinForm.
Я нахожу, лучше иметь: this.myDropDownList. Объекты. Добавьте (новый ListItem ("Выберите...", ""));
Таким образом, я передаю пользователю, что они должны выбрать объект, и можно проверить SelectedIndex == 0 для проверки