脚本:
$(document).ready(function() {
$('#<%=txtfranchisecode.ClientID %>').change(function() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CreditLimit.aspx/databind",
data: '{Code: ' + $('#<%=txtfranchisecode.ClientID%>').val() + '}',
dataType: "json",
success: function(data) {
for (var i = 0; i < data.d.length; i++) {
$('#<%=tbDetails.ClientID %>').append("<tr><td><b>Name:</b></td><td>" + data.d[i].Name + "</td></tr><tr><td><b>Address:</b></td><td>" + data.d[i].Address + "</td></tr><tr><td><b>phone:</b></td><td>" + data.d[i].Phone + "</td></tr><tr><td><b>Email:</b></td><td>" + data.d[i].Email + "</td></tr><tr><td><b>Branch:</b></td><td>" + data.d[i].branch + "</td></tr>");
}
$('#<%=panel.ClientID %>').dialog("open");
},
error: function(result) {
alert("Error");
}
});
});
});
我在我的页面上使用了更新面板。当我使用第一次但在回发后没有工作时它工作(在Textbox更改事件后面我有一些Serverside计算)
通过谷歌我得到了这个链接Click me,我尝试了这个但没有用 我该怎么办?
编辑:尝试使用“Amresh Kumar Singh”解决方案
<script>
$(function() {
$('#<%=panel.ClientID %>').dialog({
autoOpen: false,
show: {
effect: "blind",
duration: 1000
},
hide: {
effect: "explode",
duration: 1000
},
buttons: [{
text: "Ok",
click: function() {
$(this).dialog("close");
}
}]
});
});
</script>
<script>
function BindData() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CreditLimit.aspx/databindbyId",
data: '{Code: ' + $('#<%=ddlname.ClientID%>').val() + '}',
dataType: "json",
success: function(data) {
for (var i = 0; i < data.d.length; i++) {
$('#<%=tbDetails.ClientID %>').append("<tr><td><b>Name:</b></td><td>" + data.d[i].Name + "</td></tr><tr><td><b>Address:</b></td><td>" + data.d[i].Address + "</td></tr><tr><td><b>phone:</b></td><td>" + data.d[i].Phone + "</td></tr><tr><td><b>Email:</b></td><td>" + data.d[i].Email + "</td></tr><tr><td><b>Branch:</b></td><td>" + data.d[i].branch + "</td></tr>");
}
$('#<%=panel.ClientID %>').dialog("open");
},
error: function(result) {
alert("Error");
}
});
}
C#:
protected void Page_Load(object sender, EventArgs e)
{
ddlname.Attributes.Add("OnChange", "BindData();");
}
第一次运作良好,但下次抛出和异常:
Error: cannot call methods on dialog prior to initialization; attempted to call method 'open'
答案 0 :(得分:1)
将你的jquery函数放在函数
中<script>
function MainFunction(){
$('#<%=txtfranchisecode.ClientID %>').change(function() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CreditLimit.aspx/databind",
data: '{Code: ' + $('#<%=txtfranchisecode.ClientID%>').val() + '}',
dataType: "json",
success: function(data) {
for (var i = 0; i < data.d.length; i++) {
$('#<%=tbDetails.ClientID %>').append("<tr><td><b>Name:</b></td><td>" + data.d[i].Name + "</td></tr><tr><td><b>Address:</b></td><td>" + data.d[i].Address + "</td></tr><tr><td><b>phone:</b></td><td>" + data.d[i].Phone + "</td></tr><tr><td><b>Email:</b></td><td>" + data.d[i].Email + "</td></tr><tr><td><b>Branch:</b></td><td>" + data.d[i].branch + "</td></tr>");
}
$('#<%=panel.ClientID %>').dialog("open");
},
error: function(result) {
alert("Error");
}
});
});
}
</script>
并在后端页面加载
中添加此代码ScriptManager.RegisterStartupScript(this, this.GetType(), GetUID(), "MainFunction();", true);
此函数也在Backend aspx页面中,每次都生成新密钥
public string GetUID()
{
return Guid.NewGuid().ToString("N");
}
答案 1 :(得分:1)
你应该创建一个Javascript函数并绑定文本框更改。
<script>
function BindData(){
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CreditLimit.aspx/databind",
data: '{Code: ' + $('#<%=txtfranchisecode.ClientID%>').val() + '}',
dataType: "json",
success: function(data) {
for (var i = 0; i < data.d.length; i++) {
$('#<%=tbDetails.ClientID %>').append("<tr><td><b>Name:</b></td><td>" + data.d[i].Name + "</td></tr><tr><td><b>Address:</b></td><td>" + data.d[i].Address + "</td></tr><tr><td><b>phone:</b></td><td>" + data.d[i].Phone + "</td></tr><tr><td><b>Email:</b></td><td>" + data.d[i].Email + "</td></tr><tr><td><b>Branch:</b></td><td>" + data.d[i].branch + "</td></tr>");
}
$('#<%=panel.ClientID %>').dialog("open");
},
error: function(result) {
alert("Error");
}
});
}
</script>
现在在页面加载事件上绑定BindData()函数如下:
txtfranchisecode.Attributes.Add("OnChange", "BindData();");
答案 2 :(得分:0)
在部分回发后不会重新加载DOM,因此不会再次命中文档就绪函数。您需要分配部分回发处理程序。
这样的事情:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load">
<ContentTemplate>
<!-- Contents... -->
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ReloadThePanel" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
答案 3 :(得分:0)
代码结构不太清楚,但您可能需要再次调用javascript。将上面的JavaScript放在一个函数中,然后在回调后调用它在C#中。
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Init", " MyFunction();", true);'