在调试Ajaxpro结合GridView的时候,出现了奇怪的函数调用的问题
代码如下
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;namespace LoadGridView
{
public partial class Default6 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Default6));
}
[AjaxPro.AjaxMethod]
public int AddAjaxTable(string name)
{
string strcon = "server=.;database=AjaxTable;uid=sa;pwd=lanjie";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand com = new SqlCommand();
com.CommandText = "insert into Ajaxtt values('" + name + "')";
com.Connection = con;
int result=com.ExecuteNonQuery();
con.Close();
com.Dispose();
return result;
}
[AjaxPro.AjaxMethod]
public string GetAjaxTable(int a )
{
string strcon = "server=.;database=AjaxTable;uid=sa;pwd=lanjie";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand com = new SqlCommand();
com.CommandText = "select * from Ajaxtt";
com.Connection = con;
SqlDataAdapter dra = new SqlDataAdapter();
dra.SelectCommand = com;
DataSet ds = new DataSet();
dra.Fill(ds, "Ajaxtt");
con.Close();
com.Dispose();
GridView GV = new GridView();
GV.DataSource = ds;
GV.DataBind();
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
GV.RenderControl(htw);
string s = strb.ToString();
return s;
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="LoadGridView.Default6" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>邦定GridView</title>
<script language=javascript>
function AddAjax()
{
var name=document.getElementById("nametext").value;
LoadGridView.Default6.AddAjaxTable(name,CallBack);
// LoadGV();
}
function LoadGV()
{
LoadGridView.Default6.GetAjaxTable(1,CallServerBack);
}
function CallServerBack(res)
{
var cc=document.getElementById("Gv");
cc.innerHTML=res.value;
}
function CallBack(ss)
{
if(ss.value!=0)
{
LoadGV();
}
}
</script>
</head>
<body onload="LoadGV();">
<form id="form1" runat="server">
<input type="text" id="nametext"/>
<input type="button" value="AjaxButton" onclick="AddAjax();" />
<div id="Gv">
</div>
</form>
</body>
</html>
这是出问题的代码,如果js代码改写成下面就可以了,
<script language=javascript>
function AddAjax()
{
var name=document.getElementById("nametext").value;
LoadGridView.Default6.AddAjaxTable(name);
LoadGV();
}
function LoadGV()
{
document.getElementById("nametext").innerHTML=LoadGridView.Default6.GetAjaxTable(1).value;
}
</script>
那么这是怎么回事呢?
代码如下
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;namespace LoadGridView
{
public partial class Default6 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Default6));
}
[AjaxPro.AjaxMethod]
public int AddAjaxTable(string name)
{
string strcon = "server=.;database=AjaxTable;uid=sa;pwd=lanjie";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand com = new SqlCommand();
com.CommandText = "insert into Ajaxtt values('" + name + "')";
com.Connection = con;
int result=com.ExecuteNonQuery();
con.Close();
com.Dispose();
return result;
}
[AjaxPro.AjaxMethod]
public string GetAjaxTable(int a )
{
string strcon = "server=.;database=AjaxTable;uid=sa;pwd=lanjie";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand com = new SqlCommand();
com.CommandText = "select * from Ajaxtt";
com.Connection = con;
SqlDataAdapter dra = new SqlDataAdapter();
dra.SelectCommand = com;
DataSet ds = new DataSet();
dra.Fill(ds, "Ajaxtt");
con.Close();
com.Dispose();
GridView GV = new GridView();
GV.DataSource = ds;
GV.DataBind();
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
GV.RenderControl(htw);
string s = strb.ToString();
return s;
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="LoadGridView.Default6" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>邦定GridView</title>
<script language=javascript>
function AddAjax()
{
var name=document.getElementById("nametext").value;
LoadGridView.Default6.AddAjaxTable(name,CallBack);
// LoadGV();
}
function LoadGV()
{
LoadGridView.Default6.GetAjaxTable(1,CallServerBack);
}
function CallServerBack(res)
{
var cc=document.getElementById("Gv");
cc.innerHTML=res.value;
}
function CallBack(ss)
{
if(ss.value!=0)
{
LoadGV();
}
}
</script>
</head>
<body onload="LoadGV();">
<form id="form1" runat="server">
<input type="text" id="nametext"/>
<input type="button" value="AjaxButton" onclick="AddAjax();" />
<div id="Gv">
</div>
</form>
</body>
</html>
这是出问题的代码,如果js代码改写成下面就可以了,
<script language=javascript>
function AddAjax()
{
var name=document.getElementById("nametext").value;
LoadGridView.Default6.AddAjaxTable(name);
LoadGV();
}
function LoadGV()
{
document.getElementById("nametext").innerHTML=LoadGridView.Default6.GetAjaxTable(1).value;
}
</script>
那么这是怎么回事呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货