문제

선택한 항목이 없는 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을 확인하여 유효성을 검사할 수 있습니다.

  1. DropDown 목록을 만들고 초기 ListItem을 지정합니다.
  2. 세트 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top