2012-07-06 48 views
0

我有動態創建的下拉列表並且包含用戶列表。如果用戶遇到某種情況,我會應用樣式屬性來突出顯示用戶。我的ListItems將全部高亮顯示,除了列表中的第一個外。這似乎很奇怪,第一個將採取這種方式,並與其他人不同。下拉列表中的第一項丟失屬性

ddlSupervisorList.Items(ddlSupervisorList.Items.Count - 1).Attributes.CssStyle.Value = "background:#cc66ff;" 

如果我選擇另一個用戶,新選擇的用戶仍然保持其突出顯示,但第一個用戶仍然不會突出顯示。

我甚至試着做以下幾點:

If ddlSupervisorList.SelectedItem.Equals(ddlSupervisorList.Items(ddlSupervisorList.Items.Count - 1)) Then 
    ddlSupervisorList.SelectedItem.Attributes.CssStyle.Value = "background:#cc66ff;" 
End If 

,但它仍然不會突出負載的第一項(默認項)。

+0

爲什麼選擇標準=「ddlSupervisorList.Items.Count - 1」。這僅僅是爲了演示的目的還是你真的想要選擇列表中的最後一項? – swannee 2012-07-06 18:57:44

+0

老實說,if語句只是試圖強制,如果項目最後一項更新是選定的項目,那麼我會強制'SelectedItem'的屬性附加CSSStyle。 – em3ricasforsale 2012-07-06 19:02:35

+0

您是否嘗試過使用螢火蟲或開發工具來查看哪些樣式屬性實際應用於該項目?也許別的東西正在壓倒你的應用風格。 – swannee 2012-07-06 19:26:58

回答

0

最終我使用了一些JQuery和JavaScript來解決這個問題。我拿起下拉列表ID並獲得了選定的選項。如果應該突出顯示'availableSelected'是cssclass,那麼我將它添加到列表行的下拉列表的css中。

var userClientId = '#<%= ddlSupervisorList.ClientID %>'; 
var selectedId = userClientId + ' option:selected'; 
function clientIdChanged() 
{ 
    if ($(selectedId).hasClass('availableSelected')) { 
     $(userClientId).addClass('availableSelected'); 
    } 
    else { 
     $(userClientId).removeClass('availableSelected'); 
    } 
} 
$(document).ready(function() { 
    clientIdChanged(); 
    $(userClientId).bind('change', clientIdChanged); 
}); 
-1

如果正在生成動態地確保你沒有把它在如果(!page.IsPostBack)。在page_load上,你必須用你想要的樣式重新渲染下拉菜單。

+0

我已經檢查過,它與isPostBack沒有任何關係,因爲它在所有其他列表項上維護樣式,而不是第一個。 – em3ricasforsale 2012-07-06 18:54:42

相關問題