c# - Jquery ddl更改事件未触发

标签 c# javascript jquery .net .net-4.0

我正在使用 .NET 4 和 JQuery 根据从 DDL 中选择的内容来显示/隐藏 Div。当我手动单击下拉菜单时,Jquery 将按预期触发并显示/隐藏字段。但是,当我以编程方式更改 DDL 的 selectedValue 时,Jquery 根本不会触发。我有一个 ddl,有两个选项:单个选项和重复选项,并且我显示选定的 div 并保持另一个隐藏。

$(document).ready(function () {
    $("#MainContent_ddlScheduleType").change(function () {
        $('#Single').hide();
        $('#Recurring').hide();
        var newSelection = "#" + this.value;
        $(newSelection).fadeIn('slow');
    });
});

实际页面内部有两个下拉字段,第一个是数据库表中当前所有作业的列表。这些作业运行一次或多次(单次、重复)。用户从第一个下拉列表中选择作业的名称。存储过程从数据库中提取该作业的信息并将其存储在客户端变量中。然后,我比较该客户端变量来决定是否应该更改下拉列表。这是完成大部分工作的事件处理程序。综上所述,当您从第一个下拉列表中选择作业时,第二个下拉列表应该更改以反射(reflect)它是重复的还是单个的(这成功发生!),但 Jquery 实际上并不显示相应的单个/重复 Div它应该显示。

        protected void ddlJobList_SelectedIndexChanged(object sender, EventArgs e)
    {
        string  Frequency = null;
        SqlParameter sqlParameter = new SqlParameter("@JobName", ddlJobList.SelectedItem.Text);
        DataTable dt = SqlHelper.GetDataTable("zzGetJobInformation", CommandType.StoredProcedure, sqlParameter);

        if (!(dt.Rows[0]["Frequency"] is DBNull))
            Frequency = dt.Rows[0]["Frequency"].ToString();

        if (Frequency == null)
            ddlScheduleType.SelectedValue = "Single";
        else
            ddlScheduleType.SelectedValue = "Recurring";
    }

有什么原因不会导致 Jquery 触发?

我看这里: jQuery drop down list change event not fire

虽然我没有使用MVC,但我以前用过,所以我可以关联看起来与我非常相似的代码。不幸的是,“解决方案”的链接不再有效,他们的答案也不是很具有描述性。我可以肯定地说,firebug 中没有报告控制台/javascript 错误。

最佳答案

好的,这解释得更好一些。困惑来自于混合服务器和客户端代码。我建议使用其中之一来管理下拉列表和影响,而不是同时使用两者。

同时使用这两种方法意味着您必须处理回发、Webforms 事件并维护客户端 (jquery) 和服务器 (.net) 上的状态,这很困惑。

我要么使用 Webforms 来管理 UI 的状态,要么使用 jquery 和 ajax 请求与页面方法、asmx 或其他类型的 asp.net 处理程序来管理 UI 的状态。

关于c# - Jquery ddl更改事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8577228/

相关文章:

c# - 另一个 URL 前缀正则表达式问题(用于 C#)

javascript - 复选框启用/禁用、选中/取消选中以及单击按钮即可更改按钮文本

javascript - jQuery - AJAX load() 方法不起作用

javascript - JQuery:悬停时文本颜色切换

asp.net - 如何在 ASP.NET 应用程序中使用 jQuery 捕获提交事件?

c# - 什么是 "private .NET framework"?

c# - 用户 '' @localhost 的访问被拒绝(使用密码 : no)

c# - 从 Jenkins 的 msBuild 生成的代码运行 nUnit

javascript - 如何在Edge上获取 Canvas 变换矩阵?

javascript - 页面刷新后如何保留我的输入