【问题标题】:Can't change selected option无法更改所选选项
【发布时间】: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


【解决方案1】:

试试这个:

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

ClientID:获取由 ASP.NET 生成的 HTML 标记的控件 ID。

您还可以将控件的ClientIDMode 更改为Static,这将保留您在Id 属性中设置的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多