2014-09-25 90 views
3

我有一個數據綁定下拉列表;無法更改選定的選項

<asp:DropDownList ID="cmbType" Runat="server" AutoPostBack="False" data-bind="value: moveType"> 
    <asp:ListItem Value="">-- Please Select --</asp:ListItem> 
    <asp:ListItem Value="0">Car</asp:ListItem> 
    <asp:ListItem Value="1">Air</asp:ListItem> 
</asp:DropDownList> 

當頁面加載時,默認情況下(據我所知,選擇第一個選項)。 問題是我根本無法改變這個選擇。

我試過第二件事情:

$('#cmbType option[value=' + d.Type + ']').attr("selected", "selected"); 

$("#cmbType").val(d.Type); 

var viewModel = { 
    this.moveType = ko.observable(d.Type); 

}; 
ko.applyBindings(new ViewModel());​ 

d.Type = 0或1

實際上,所有的變種似乎正在工作。他們改變可見值選擇一個(汽車或空氣),但當我試圖獲得選定的價值,我越來越值=「」( - 請選擇 - )。

當下拉菜單顯示選擇了一個選項(汽車或空氣),但實際選定的選項仍然是( - 請選擇 - )時,會發生什麼?

+1

因爲asp.net中有服務器端控件,因此將clientid模式設置爲靜態模式。 – 2014-09-25 13:57:04

+0

試試這個$(「[id $ ='cmbType']」)。val(d.Type);.因爲服務器將在渲染之前更改其ID。 – 2014-09-25 13:58:47

+0

@AnoopJoshi在數據網格或用戶控件中,它可能是一個問題。 – Dalorzo 2014-09-25 14:00:14

回答

5

嘗試這種情況:

$('#<%=cmbType.ClientID %> option[value=' + d.Type + ']').attr("selected", "selected"); 

的ClientID:獲取由ASP.NET生成的HTML標記的控件ID。

您也可以改變控制Static將保留您在Id屬性設置的值的ClientIDMode