我有一个CascadingDropDown,我不想在PageLoad上运行,但是会在下拉列表被更改后运行。为了实现这一点,在页面加载事件有机会运行之前,我将禁用它的服务器端。然后,当ddl被更改时,我将使用jquery来启用CascadingDropDown。我遇到的问题是,jquery在禁用CascadingDropDown之后找不到它。有谁知道我怎样才能找到它,或者其他的方法吗?
这是我的级联DropDown:
<ajaxToolkit:CascadingDropDown id="ajaxccd_ddlFoo" runat="server"
TargetControlid="ddlFoo" ParentControlid="ddlBar" PromptText="-- Select --"
Category="Foo" ServicePath="~/AJAXWebServices/CascadingDropDownPopulator.asmx"
ServiceMethod="Populate_ddlFoo" />在VB.net页面加载事件中禁用它的代码:
ajaxccd_ddlTPA.Enabled = False在这里,我试图获得对象客户端:
$(".ddlBarCls").click(function () {
var ajaxccd_ddlFooID = document.getElementById('ajaxccd_ddlFooID').value;
var ajaxccd_ddlFoo = $find(ajaxccd_ddlFooID);
});问题是,ajaxccd_ddlFoo总是什么也不回。我已经确认,当ajaxccd_ddlTPA没有禁用服务器端时,jquery就不会有问题找到它。
任何帮助都将不胜感激!
发布于 2014-09-05 15:24:47
ajaxccd_ddlTPA.Enabled = False当禁用控制服务器端(参见上面)时,实际发生的情况是,asp.net框架不会将控件呈现给浏览器。这就是为什么jquery找不到控件的原因,因为浏览器中不存在该控件。
如果需要在浏览器中操作控件,则需要禁用它,使框架仍然将其呈现给浏览器。
一种方法是呈现启用的控件,然后在浏览器的页面加载事件上使用javascript来禁用它。
示例
将此代码添加到页面(*.aspx)的head部分,.This代码将在Page事件中执行。
<script type="text/javascript">
function pageLoad(sender, args) {
$find("myFoo").add_populated(onPopulated);
}
function onPopulated() {
$get("ddlFoo").disabled = true;
}
</script>在CascadingDropDown控件上添加必要的BehaviorID属性
<ajaxToolkit:CascadingDropDown id="ajaxccd_ddlFoo"
runat="server"
TargetControlid="ddlFoo"
ParentControlid="ddlBar"
BehaviorID="myFoo"
PromptText="-- Select --"
Category="Foo"
ServicePath="~/AJAXWebServices/CascadingDropDownPopulator.asmx"
ServiceMethod="Populate_ddlFoo" />https://stackoverflow.com/questions/25688720
复制相似问题