2013-03-08 37 views
1

我有一個列表框,其中包含正在頁面加載時填充的多個項目。除了最後一個項目外,列表框中的每個項目都可以選擇沒有問題。當點擊該選項時,自動跳到上面的兩個項目。我似乎無法圍繞爲什麼會發生這種情況。只有在選擇最後一項時纔會發生。列表框位於ajax選項卡容器內的更新面板中,但我看不出爲什麼會有所作爲。我真希望我沒有缺少明顯的東西...列表框中的選擇不停留選中

列表框:

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

頁面加載事件:

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

當這發生在我身上,最後一個項目有相同的值列表中的其他項目。因此,當您選擇它時,它會選擇具有該值的第一個項目,該項目在列表中較早出現。要檢查的東西。 – 2013-03-08 15:20:06

+0

如果問題不是@MikeC指出的。 ,你應該給在較近的「從數據庫填充」,看看是否也與硬編碼值 – jbl 2013-03-08 15:40:33

+0

@MikeC出現的問題。你是完全正確的,文本屬性是不同的,但某些項目的值是相同的,因爲我在那裏存儲查詢結果。甚至沒有想過這個 - 謝謝你!如果你給你的評論一個答案,我會標記它。 – ovaltein 2013-03-08 15:48:48

回答

1

檢查您的值列表,並確保您沒有任何重複。我以前見過的是在列表中稍後選擇一個值,但是它是列表中較早項目的重複值。那麼會發生什麼情況是選擇僅適用於第一個匹配項目。

0

如果可能我建議你使用客戶端JavaScript/Jquery 你可以將onChange事件添加到listBox中,並使用jQuery .Show(),.Hide()方法顯示或隱藏面板。它也快得多。 唯一的問題是,在使用servicePanel.Visible = false時,該面板從視圖中隱藏起來;面板沒有出現在頁面上。