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
相关产品推荐
相关产品推荐

