首先我们今天要用到的是Ajax.NET Professional ,您可以从
http://www.schwarz-interactive.de/ 获取更多的信息
然后还需要知道Xml数据岛,先来看一个简单的绑定例子:
第一步先确定XML数据源
第一步:配置Ajax,在Web.config文件中加入配置节:
第四步:添加客户端绑定
第五步:编定加载数据的JavaScript代码
然后还需要知道Xml数据岛,先来看一个简单的绑定例子:
第一步先确定XML数据源
<
xml
ID
="xmlData"
name
="xmlData"
>
< root >
< METADATA >
< AUTHOR > John Smith </ AUTHOR >
< GENERATOR > Visual Notepad </ GENERATOR >
< PAGETYPE > Reference </ PAGETYPE >
< ABSTRACT > Specifies a data island </ ABSTRACT >
</ METADATA >
< METADATA >
< AUTHOR > John Smith2 </ AUTHOR >
< GENERATOR > Visual Notepad2 </ GENERATOR >
< PAGETYPE > Reference2 </ PAGETYPE >
< ABSTRACT > Specifies a data island2 </ ABSTRACT >
</ METADATA >
< METADATA >
< AUTHOR > John Smith3 </ AUTHOR >
< GENERATOR > Visual Notepad3 </ GENERATOR >
< PAGETYPE > Reference3 </ PAGETYPE >
< ABSTRACT > Specifies a data island3 </ ABSTRACT >
</ METADATA >
</ root >
</ xml >
第二步确定绑定容器,在这里我们使用Table
< root >
< METADATA >
< AUTHOR > John Smith </ AUTHOR >
< GENERATOR > Visual Notepad </ GENERATOR >
< PAGETYPE > Reference </ PAGETYPE >
< ABSTRACT > Specifies a data island </ ABSTRACT >
</ METADATA >
< METADATA >
< AUTHOR > John Smith2 </ AUTHOR >
< GENERATOR > Visual Notepad2 </ GENERATOR >
< PAGETYPE > Reference2 </ PAGETYPE >
< ABSTRACT > Specifies a data island2 </ ABSTRACT >
</ METADATA >
< METADATA >
< AUTHOR > John Smith3 </ AUTHOR >
< GENERATOR > Visual Notepad3 </ GENERATOR >
< PAGETYPE > Reference3 </ PAGETYPE >
< ABSTRACT > Specifies a data island3 </ ABSTRACT >
</ METADATA >
</ root >
</ xml >
<
TABLE
dataSrc
="#xmlData"
border
=1
>
< TR >
< TD >< span dataFld ="AUTHOR" > loading... </ span ></ TD >
< TD >< span dataFld ="GENERATOR" > loading... </ span ></ TD >
< TD >< span dataFld ="PAGETYPE" > loading... </ span ></ TD >
< TD >< span dataFld ="ABSTRACT" > loading... </ span ></ TD >
</ TR >
</ TABLE >
< TR >
< TD >< span dataFld ="AUTHOR" > loading... </ span ></ TD >
< TD >< span dataFld ="GENERATOR" > loading... </ span ></ TD >
< TD >< span dataFld ="PAGETYPE" > loading... </ span ></ TD >
< TD >< span dataFld ="ABSTRACT" > loading... </ span ></ TD >
</ TR >
</ TABLE >
把这两段代码Copy到您的HTMl页面运行既可看到效果
第一段是我们的XML数据源,也就是要绑定的数据,METADATA结点相当于表名, AUTHOR、GENERATOR、PAGETYPE、ABSTRACT相当于列名,下面的Table是用来显示数据的容器。<TABLE dataSrc="#xmlData" border=1>是指定Table的数据源,<span dataFld="AUTHOR">loading...</span>绑定字段名。
第一步:配置Ajax,在Web.config文件中加入配置节:
<
httpHandlers
>
< add verb ="POST,GET" path ="ajaxpro/*.ashx" type ="AjaxPro.AjaxHandlerFactory, AjaxPro" />
</ httpHandlers >
第二步,编写返回数据集的代码:
< add verb ="POST,GET" path ="ajaxpro/*.ashx" type ="AjaxPro.AjaxHandlerFactory, AjaxPro" />
</ httpHandlers >
public
class
MyClass
{
[AjaxMethod]
public string GetDataSet()
{
DataSet dst = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Text");
dt.Columns.Add("Number");
Random random = new Random(Guid.NewGuid().GetHashCode());
for (int i = 0; i < random.Next(10,20); i++)
{
DataRow row = dt.NewRow();
row["Text"] = Guid.NewGuid().ToString("N");
row["Number"] = random.Next(100);
dt.Rows.Add(row);
}
dst.Tables.Add(dt);
string text = "";
using(MemoryStream ms = new MemoryStream())
{
dst.WriteXml(ms);
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
text = sr.ReadToEnd();
}
return text;
}
}
第三步:在Page_Load中注册该方法,AjaxPro.Utility.RegisterTypeForAjax(typeof(WebTest1.AjaxTest1));(WebTest1是名称空间的名字)
{
[AjaxMethod]
public string GetDataSet()
{
DataSet dst = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Text");
dt.Columns.Add("Number");
Random random = new Random(Guid.NewGuid().GetHashCode());
for (int i = 0; i < random.Next(10,20); i++)
{
DataRow row = dt.NewRow();
row["Text"] = Guid.NewGuid().ToString("N");
row["Number"] = random.Next(100);
dt.Rows.Add(row);
}
dst.Tables.Add(dt);
string text = "";
using(MemoryStream ms = new MemoryStream())
{
dst.WriteXml(ms);
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
text = sr.ReadToEnd();
}
return text;
}
}
第四步:添加客户端绑定
<
INPUT
onclick
="WebTest1.MyClass.GetDataSet(callback)"
type
="button"
value
="GetDataSet"
>
< div id ="oDataPanel" >
</ div >
< TABLE datasrc ="#xmlData" WIDTH ="500" BORDER ="1" CELLSPACING ="1" CELLPADDING ="1" >
< thead >
< tr >
< th width ="70%" > 姓名 </ th >
< th width ="30%" > 年龄 </ th >
</ tr >
</ thead >
< TR >
< TD >< span datafld ="Text" ></ span ></ TD >
< TD >< span datafld ="Number" ></ span ></ TD >
</ TR >
</ TABLE >
<
div
id
="oDataPanel"
>
是准备用来存放Xml数据源的容器
< div id ="oDataPanel" >
</ div >
< TABLE datasrc ="#xmlData" WIDTH ="500" BORDER ="1" CELLSPACING ="1" CELLPADDING ="1" >
< thead >
< tr >
< th width ="70%" > 姓名 </ th >
< th width ="30%" > 年龄 </ th >
</ tr >
</ thead >
< TR >
< TD >< span datafld ="Text" ></ span ></ TD >
< TD >< span datafld ="Number" ></ span ></ TD >
</ TR >
</ TABLE >
第五步:编定加载数据的JavaScript代码
function
callback(res)
{
if(!res.error)
{
document.all.oDataPanel.innerHTML = '<xml id="xmlData">'+ res.value +'</xml>';
}
else
{
alert(res.error.Message);
}
}
{
if(!res.error)
{
document.all.oDataPanel.innerHTML = '<xml id="xmlData">'+ res.value +'</xml>';
}
else
{
alert(res.error.Message);
}
}