2013-03-08 6 views
1

페이지로드시 채워지는 여러 항목을 포함하는 목록 상자가 있습니다. 목록 상자의 각 항목은 마지막 항목을 제외하고는 문제없이 선택할 수 있습니다. 해당 항목을 클릭하면 위의 두 항목까지 자동으로 이동합니다. 나는 이것이 왜 일어나고 있는지에 대해 머리를 감싸고있는 것처럼 보일 수 없다. 마지막 항목이 선택되었을 때만 발생합니다. 목록 상자는 Ajax 탭 컨테이너의 업데이트 패널에 있지만 왜 차이가 나는지 알 수 없습니다. 정말 ... 내가 뭔가를 분명 실종 아니에요 희망목록 상자에서 선택한 항목이 선택되지 않음

목록 상자 :

<asp:ListBox ID="availableServicesListBox" 
    runat="server" 
    class="formListBox" 
    AutoPostBack="True" 
    onselectedindexchanged="availableServicesListBox_SelectedIndexChanged"> 
</asp:ListBox> 

페이지로드 이벤트 : (AutoPostBack을위한)

if (!Page.IsPostBack)   
{ 
     //populate from database  
} 

selectedIndex의 변경 이벤트 :

protected void availableServicesListBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (availableServicesListBox.SelectedValue.Length > 10) 
    { 
     servicePanel.Visible = true; 
     activePanel.Visible = true;     
    } 

    else 
    { 
     servicePanel.Visible = false; 
    } 
} 
+3

이 문제가 발생하면 마지막 항목의 목록에있는 다른 항목과 동일한 값이 나타납니다. 따라서이 값을 선택하면 목록에서 먼저 나오는 값을 가진 첫 번째 항목이 선택됩니다. 확인해야 할 것이 있습니다. –

+0

@MikeC에 의해 지적 된 문제가 아닌 경우. "데이터베이스에서 채우기"를 더 자세히 알려야하며 문제가 하드 코딩 된 값으로 발생하는지 확인하십시오 – jbl

+0

@MikeC. 당신은 정확합니다. 텍스트 속성은 다르지만 쿼리 결과를 거기에 저장했기 때문에 특정 항목의 값은 같습니다. 이거 생각조차하지 마 - 고마워! 당신이 당신의 코멘트를 대답한다면 나는 그것을 표시 할 것입니다. – ovaltein

답변

1

값 목록을 확인하고 중복 된 항목이 없는지 확인하십시오. 과거에 내가 본 것은 나중에 목록에서 값을 선택하지만 목록의 이전 항목에 대한 중복 값입니다. 그러면 선택 항목이 처음으로 일치하는 항목에만 적용됩니다.

0

가능한 경우 클라이언트 쪽 JavaScript/Jquery를 사용하여 수행하는 것이 좋습니다 onChange 이벤트를 listBox에 추가하고 jquery .Show(), .Hide() 메서드를 사용하여 패널을 표시하거나 숨길 수 있습니다. 또한 훨씬 빠릅니다. 문제는 servicePanel.Visible = false를 사용하는 동안 패널이 숨겨져있는 것입니다. 패널이 페이지에 전혀 표시되지 않습니다.

관련 문제