赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

基于AJAX技术的DataGrid控件编程

发布时间:2006.05.11 03:15     来源:51cto    作者:oneworld 转

 

简介

在传统的Web开发中,每次DataGrid控件填充或更新都相应于一次到服务器的数据回馈。但是,借助于AJAX技术,我们可以在不进行表单提交(刷新)的情况下即可以填充DataGrid控件。

在本文中,我们通过一个简单示例并借助于一个DropDownList控件的帮助来讨论如何达到这一目的。在这个例子中,我们使用了一个DropDownList控件;一旦改变DropDownList的值,它即用相应的城市名来填充DataGrid控件,在此过程中我们巧妙了引入了AJAX技术。

既然我们已经了解一些AJAX的基本知识,现在让我们进一步讨论这个DataGrid示例程序。在本例中,我们主要解释如何从客户端发送请求,如何处理请求,以及如何运行客户端脚本来显示DataGrid中的数据。

示例应用程序结构

在本例中,我们共建立了两个Web表单(AjaxServer.aspx和DataGridEx.aspx),一个JavaScript文件和一个层叠式样表文件(css)。文件AjaxServer.aspx负责服务器端功能(一旦选择即返回作者结果),而文件DataGridEx.aspx负责使用AJAX技术显示返回的结果。下面让我们作进一步分析。

1. AjaxServer.aspx

这个页面以选择的“City”作为请求。它取回所有的属于该城市的作者并且把一个XML响应字符串返回到客户端(见列表1)。

列表1—AjaxSever.aspx.vb代码

Private Sub Page_Load(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then

choice = Request("Choice")

If choice.Length > 0 Then

Response.Clear()

If choice = "All Cities" Then

DA = New SqlDataAdapter("select * from authors", con)

Else

DA = New SqlDataAdapter("select * from authors where city ='" & Request("Choice") & "'", con)

End If

DA.Fill(ds)

chString = ds.GetXml()

Response.Clear()

Response.ContentType = "text/xml"

Response.Write(chString)

Response.End()

Else

Response.Clear()

Response.End()

End If

Else

Response.Clear()

Response.End()

End If

End Sub

2. DataGridEx.aspx

这个页面开始把所有的作者信息显示在DataGrid中。每当DropDownList中发生变化,它使用JavaScript文件取回内容并预以显示。注意:为了显示当前正运行的进程的状况,我们在此使用了一个面板。该面板具有一个GIF图像(开始不可见)—在处理发生于服务器端时它被显示,而一旦处理结束即变为不可见的(见图1)。我们这样做的根本目的就是为了让用户详细了解当前正运行的进程情况。



图1.DatagridEx.aspx的快照(为了显示进程)

3.JavaScript文件

这个文件负责整个进程的处理请求和响应。这个文件将生成XMLHttpRequest并且把选择的城市发送到AjaxServer.aspx页面。一旦返回,它得到一个类似于数据库表的输出结果—该结果将被填充到DataGrid中。

一开始,上图面板中的“进程”图像是不可见的。当DropDownList选择发生变化时,“进程”图像就显示出来,直到用返回的结果填充DataGrid为止(见列表2)。该DataGrid被返回的数据填充—通过使用一个简单的for循环来读取返回的内容(见列表3)。

列表2—进程状态

function FetchDGContents(){

var selecteditem = document.Form1.ddlcity.value;

imgtbl.style.visibility = 'visible';

var requestUrl = AjaxServerPageName + "?Choice=" +

encodeURIComponent(selecteditem);

CreateXmlReq();

if(XmlReq){

XmlReq.onreadystatechange = HandleResponse;

XmlReq.open("GET", requestUrl, true);

XmlReq.send();

}

}

列表3—使用收到的响应数据填充DataGrid控件

function FillTable(scity){

var auth = scity.getElementsByTagName('Authors');

var tbl = document.getElementById('dgauthors').getElementsByTagName("tbody")[0];

for(var i=0;i
{

var row = document.createElement("TR");

row.setAttribute("className","text");

row.setAttribute("bgColor","#ECECEC");

for(var j=0;j
{

var cell = document.createElement("TD");

cell.innerHTML = auth.context.childNodes(i).childNodes(j).text;

row.appendChild(cell);

}

tbl.appendChild(row)

}

}

运行示例代码

你可以下载本文相应的示例源码进行分析。首先,创建一个命名为MyAjax的虚拟目录,然后把解压后的文件复制到该目录下即可。最后,打开Visual Studio.NET解决方案资源管理器并按F5键运行程序,并观察结果。

总结

本文通过一个简单的例子—使用AJAX技术操作DataGrid控件—来显示服务器调用的处理状态。这是把AJAX技术应用于.NET平台Web开发的又一简单示例。


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 新手必读:JAVA开发工具安装配置心得 (05-10) · 浅谈Java中final,finalized,finally (05-10)
· Java EE 5通过终审投票—JSR 224技术规范 (05-10) · 使用Java Annotations来管理对象的生命周期 (05-10)
· JavaOne即将召开 Sun将发布Java EE (05-10) · 【开发工具】Eclipse照亮Java众生 (05-09)
· Java基础:提升JSP应用程序七大绝招 (05-09) · 源码提供:数据库连接的一些代码 (05-09)
· Spring里面的一些添删改查示例(二) (05-09) · Spring里面的一些添删改查示例(一) (05-09)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 北京新规不能霸王硬上弓 网店牌照缓期执行
· 软件外包之变的新台阶: 提高全球交付能力
· ERP案例分析 SaaS带来冲击 IT服务商面临挑战
· 通方期货CRM解决方案 房地产行业CRM解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统