"DropDownList.SelectedIndex = -1" 문제
-
09-06-2019 - |
문제
선택한 항목이 없는 ASP.NET DropDownList만 원합니다.SelectedIndex를 -1로 설정하는 것은 지금까지는 소용이 없습니다.AJAX와 함께 Framework 3.5를 사용하고 있습니다.이 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를 호출해 보았습니다.)...내가 뭘 잘못하고 있는 걸까요?개미의 도움을 주시면 감사하겠습니다!
해결책
DataSource/DataBind 호출을 수행한 후 호출하면 myDropDownList.Items.Add가 맨 아래에 새 Listitem 요소를 추가하므로 대신 myDropDownList.Items.Insert 메서드를 사용하십시오.
myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();
myDropDownList.Items.Insert(0, new ListItem("Please select", ""));
상단에 '선택하세요' 드롭다운 항목이 추가됩니다.
그리고 언급한 대로 드롭다운에는 항상 정확히 하나의 항목이 선택되며(ListBox는 다를 것으로 생각됩니다), 명시적으로 선택된 항목이 없으면 기본값은 최상위 항목입니다.
다른 팁
설정이 가능해요 선택된 인덱스 의 자산 드롭 다운 목록 -1로 (i.이자형.선택 지우기) 클라이언트 측 스크립트를 사용하여:
<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>
나는 다음을 읽고 있습니다:http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx
그것은 말한다:선택한 항목의 인덱스 값을 얻으려면 SelectedIndex 속성의 값을 읽으십시오.인덱스는 0부터 시작합니다.아무것도 선택하지 않은 경우 속성 값은 -1입니다.
동시에, http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex(VS.80).aspx 우리는보다:
SelectedIndex 속성을 사용하여 DropDownList 컨트롤에서 선택한 항목의 인덱스를 프로그래밍 방식으로 지정하거나 결정합니다.DropDownList 컨트롤에서는 항상 항목이 선택됩니다.목록의 모든 항목에서 동시에 선택을 취소할 수는 없습니다.
아마도 -1은 인덱스 설정이 아닌 가져오기에만 유효할까요?그렇다면 '패치'를 사용하겠습니다.
드롭다운에 일부 항목이 선택되어 있어야 한다고 확신합니다.나는 보통 빈 목록 항목을 추가합니다.
this.myDropDownList.Items.Add("");
내 첫 번째 목록 항목으로 그에 따라 진행하십시오.
selectedIndex는 컨트롤이 처음 초기화되고 컬렉션 내에 항목이 없는 경우에만 -1일 수 있습니다.
WinForm에서처럼 웹 드롭다운 목록에서 항목을 선택하지 않는 것은 불가능합니다.
나는 다음을 갖는 것이 가장 좋다고 생각합니다.this.myDropDownList.Items.Add(new ListItem("선택하세요...", ""));
이렇게 하면 사용자에게 항목을 선택해야 한다는 점을 전달하고 SelectedIndex == 0을 확인하여 유효성을 검사할 수 있습니다.
- DropDown 목록을 만들고 초기 ListItem을 지정합니다.
- 세트
AppendDataBoundItems
에게true
새 항목이 추가되도록 합니다.
<asp:DropDownList ID="YourID" DataSourceID="DSID" AppendDataBoundItems="true"> <asp:ListItem Text="All" Value="%"></asp:ListItem> </asp:DropDownList>
아래 구문을 시도해 보세요.
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Select"))
또는
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("SelectText"))
또는
DropDownList1.Items.FindByText("Select").selected =true
더 많은 정보를 위해서 :http://vimalpatelsai.blogspot.in/2012/07/dropdownlistselectedindex-1-problem.html