【发布时间】:2014-11-20 08:06:30
【问题描述】:
我有一个带有数据绑定的下拉列表;
<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。
实际上,所有变体似乎都在工作。他们将可见值更改为选择的一个(汽车或空气)但是当我试图获得选定的值时,我得到 value=""(-- 请选择--)。
当下拉菜单显示选择了一个选项(汽车或航空)但实际选择的选项仍然是(--请选择--)时,会发生什么?
【问题讨论】:
-
因为asp.net中有服务端控件所以设置clientid模式为静态。
-
试试这个 $("[id$='cmbType']").val(d.Type);.因为服务器会在渲染之前改变它的id。
-
@AnoopJoshi 在数据网格或用户控件中,这可能是个问题。
-
@Dalorzo 怎么样?呈现的 id 总是以客户端 id 结尾。我不是百分百确定。如果我错了,请原谅。
-
@AnoopJoshi 我指的是在某些情况下添加在控件末尾的称为
ClientIDRowSuffix的东西,如果您在同一页面中添加 2 个 UserControls,则 2 个控件将符合标准对于同一个 querySelector
标签: c# jquery asp.net knockout.js