【发布时间】:2023-03-16 19:16:01
【问题描述】:
我正在使用 .NET 4 和 JQuery 来显示/隐藏 Div,具体取决于从 DDL 中选择的内容。当我手动单击下拉菜单时,Jquery 会按预期触发并显示/隐藏字段。但是当我以编程方式更改 DDL 的 selectedValue 时,Jquery 根本不会触发。我有一个带有两个选项的单个 ddl,单个和重复,我显示选定的 div 并保持另一个隐藏。
$(document).ready(function () {
$("#MainContent_ddlScheduleType").change(function () {
$('#Single').hide();
$('#Recurring').hide();
var newSelection = "#" + this.value;
$(newSelection).fadeIn('slow');
});
});
在实际页面内部有两个下拉字段,第一个是当前在数据库表中的所有作业的列表。这些作业要么运行一次,要么运行多次(单次、重复)。用户从第一个下拉列表中选择作业的名称。存储过程从数据库中提取该作业的信息并将其存储在客户端变量中。然后我比较那个客户端变量来决定我是否应该改变下拉菜单。这是完成大部分工作的事件处理程序。所以再次总结一下,当您从第一个下拉列表中选择作业时,第二个下拉列表应该会更改以反映它是重复的还是单个的(这会成功发生!)但是 Jquery 实际上并没有显示相应的 Single / Recurring 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,但我以前使用过 MVC,因此我可以关联看起来与我非常相似的代码。不幸的是,“解决方案”的链接不再有效,他们的答案也不是很具描述性。我可以肯定地说,firebug 中没有报告控制台/javascript 错误。
【问题讨论】:
-
我怀疑 .net 在这方面发挥了作用。服务器技术对客户端脚本没有影响。
-
@Jason Meckley 是的,但我通过从数据库中提取来决定 ddlScheduleType.SelectedValue 的值,然后如果它是某个值,我使用 C# 和 asp ddl 将 DDL 设置为 Single .
标签: c# javascript jquery .net .net-4.0