在我的页面上,我获得了以下用户控件:
<div class="editFormDialog" style="display: none; font-size: 12px;">
<mm:Form ID="editUC" ShowCreateButton="false" ShowEditButton="true" runat="server" />
</div>
这个UC有一个公共属性,它接受一个DataSet,并更新UC中的一些字段。
因此,当我按下我的页面上的按钮时,它会在UC上调用此属性,并且UC会使用DataSet中的数据进行更新。
到目前为止一切顺利。当我希望UC成为jQuery UI对话框时会出现问题。
首先我创建对话框:
$(document).ready(function() {
$('.editFormDialog').dialog({
autoOpen: false,
height: 700,
width: 780,
modal: true,
bgiframe: true,
title: 'Rediger',
open: function(type, data) {
$(this).parent().appendTo("form");
$(this).css('display', 'block');
}
});
});
我不想按下按钮(这不是ASP.NET按钮,纯HTML):
$('#btnEdit').live('click', function() {
$('.editFormDialog').dialog('open');
});
对话框打开,但UC不包含正确的数据。 页面加载时,UC将使用默认数据进行更新。然后用户单击一个按钮,数据会发生变化但UC不会更新。它仍包含默认数据。这就是问题所在。
你知道为什么吗?
非常感谢帮助!
答案 0 :(得分:2)
我找到了解决这个问题的方法。事实证明,当你附加到表单时,你需要确保这段代码在jquery文档中准备就绪:
$("#dialog1").parent().appendTo($("form:first"));
所以整件事应该是这样的:
jQuery(document).ready(function() {
$("#<%=myFamilyGrid.ClientID %>").tablesorter({
sortList: [[0, 1]]
})
.tablesorterPager({ container: $("#pager") });
$("#dialog1").dialog({
modal: true,
height: 370,
width: "350px",
autoOpen: false,
bgiframe: false,
zIndex: 3999
});
$("#dialog1").parent().appendTo($("form:first"));
});
希望这有帮助!
答案 1 :(得分:1)
当你“调用属性”时会发生什么?(我认为你的意思是它是一种方法)?页面是否执行回发?如果是这种情况,当你将jQuery混合到场景中时,可能会以某种方式阻止回发吗?
答案 2 :(得分:0)
由于您使用的是更新面板,如何将调用注入页面中的javascript?我问,因为只有一种方法可以在部分回发上正常工作:ScriptManager.RegisterStartupScript()。这允许javascript代码就像加载页面一样。当然,也可以调用任何其他onload javascript,这可能会导致您看到的行为。
所以,
还可以通过Web服务在ajax控件中转换UC来更改数据源。不再有部分回发,这通常可以提高页面的响应能力。