You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RadDropDownList的OnClientSelectedIndexChanged事件未触发问题

问题排查与解决

核心原因:控件处于禁用状态

你的RadDropDownList设置了Enabled="false",禁用状态下的控件无法响应用户选择操作,自然不会触发OnClientSelectedIndexChanged事件。要让事件正常触发,先将该属性改为Enabled="true":

<telerik:RadDropDownList ID="ddl_AutoSchedule" runat="server" Enabled="true" AutoPostBack="True" OnClientSelectedIndexChanged="ddl_AutoSchedule_SelectedIndexChanged">
  <Items>
     <telerik:DropDownListItem Value="0" Text="Select a Schedule" />
     <telerik:DropDownListItem Value="30" Text="30 Days" />
     <telerik:DropDownListItem Value="45" Text="45 Days" />
     <telerik:DropDownListItem Value="60" Text="60 Days" />
     <telerik:DropDownListItem Value="90" Text="90 Days" />
     <telerik:DropDownListItem Value="120" Text="120 Days" />
     <telerik:DropDownListItem Value="180" Text="180 Days (6 Months)" />
     <telerik:DropDownListItem Value="270" Text="270 Days (9 Months)" />
     <telerik:DropDownListItem Value="365" Text="365 Days (1 Year)" />
  </Items>
</telerik:RadDropDownList>

事件触发后需修正的JS代码问题

即使事件正常触发,当前JS代码存在多处错误会导致功能失效:

  • $find用法错误:Telerik客户端控件获取需使用控件的ClientID,无需加#,正确写法为$find("<%= date_DueDate.ClientID %>");若为普通HTML日期输入框,应使用document.getElementById("<%= date_DueDate.ClientID %>")
  • 无Now对象:JS中无C#的Now对象,需用new Date()获取当前日期,添加天数需自定义方法
  • 日期格式问题:日期输入框需特定格式(如yyyy-MM-dd),需将Date对象转为对应格式字符串

修正后的JS代码示例:

function ddl_AutoSchedule_SelectedIndexChanged(sender, eventargs) {
    // 获取Telerik日期控件
    var date_DueDate = $find("<%= date_DueDate.ClientID %>");
    var date_PlannedStart = $find("<%= date_PlannedStart.ClientID %>");
    var date_PlannedFinish = $find("<%= date_PlannedFinish.ClientID %>");

    // 转换选中值为数字
    var daysToAdd = parseInt(sender.get_selectedValue());
    var today = new Date();

    // 设置日期值
    date_DueDate.set_selectedDate(addDays(today, daysToAdd));
    date_PlannedStart.set_selectedDate(today);
    date_PlannedFinish.set_selectedDate(addDays(today, daysToAdd));
}

// 自定义添加天数方法
function addDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}

额外说明

若需初始禁用控件、后续通过JS启用,可使用以下代码确保控件恢复交互能力:

var ddl = $find("<%= ddl_AutoSchedule.ClientID %>");
ddl.set_enabled(true);

内容的提问来源于stack exchange,提问作者SethD02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:25:55