在ASP的时候我写的一篇文章,现在改用ASP .NET 2.0
一个类似Ajax的咚咚,支持IE4,支持98。
好像95装了IE4都可以。
一般在微软平台使用Ajax,大部分其实使用的是微软的XML HTTP这个技术。
其实微软还有一个更老的技术,实现无刷新,且客户段无需安装任何东西。而且数据可以直接绑定到表格,无需任何JavaScrip转化Tabular Data Control。
Tabular Data Control(以下称TDC)是基于IE4以上浏览器(可见要求很低)。功能是提供对格式化文本文件的访问。也就是说,TDC提供的数据来源是用指定分隔符来格式化的文本文件。
TDC 的属性有
AppendData
指定已存在的数据,如果发生新的数据的新建或更新。
CaseSensitive
敏感字符。
CharSet
文件编码格式。
DataURL
指定数据文件的位置。
EscapeChar
转义字符。
Filter
指定过滤数据的方法。
Language
数据文件的语言格式,包括数字和数据的格式。
RowDelim
指定每一行的行终结字符。
Sort
排序方式。
TextQualifier
文本修饰方式。
UseHeader
指定是否显示数据文件第一行的头信息。
FieldDelim
指定分割数据列的字符。
方法
Reset
刷新数据。
示例:
在Visual Studio 2005中新建一个项目
1、新建数据提供文件Data.aspx,新建时去掉代码分割复选框。
清空Data.aspx所有内容。然后键入以下代码。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%
Response.ContentEncoding=Encoding.GetEncoding("GB2312");
Request.ContentEncoding=Encoding.GetEncoding("GB2312");
SqlConnection cn=new SqlConnection("server=169.0.0.1;database=Test;uid=sa;pwd=iloveyouhpx;");
SqlCommand cm = new SqlCommand("select top 100 单位,书名,版别,书号 from 图书分销_订单", cn);
cm.CommandType=CommandType.Text;
cn.Open();
SqlDataReader r=cm.ExecuteReader();
Response.Write(r.GetName(0));
Response.Write(",");
Response.Write(r.GetName(1));
Response.Write(",");
Response.Write(r.GetName(2));
Response.Write(",");
Response.Write(r.GetName(3));
Response.Write("\n");
while(r.Read())
{
Response.Write(r.GetString(0));
Response.Write(",");
Response.Write(r.GetString(1));
Response.Write(",");
Response.Write(r.GetString(2));
Response.Write(",");
Response.Write(r.GetString(3));
Response.Write("\n");
}
cn.Close();
%>
以上代码的目的是形成一个,用“,”分割的格式化数据文本文件。
运行后的结果如下(文件源文本)
单位,书名,版别,书号
中国刑警学院图书馆,权力定律,群言版,ISBN7-80080-398-8
中国刑警学院图书馆,八千里路云和月,京华版,ISBN7-80600-725-3
....
现在需要建立另一个文件来显示数据。
2、新建Test.aspx
(1)嵌入ActiveX控件
<object id="dsoSoftware" classid="clsid:333c7bc4-460f-11d0-bc04-0080c7055a83">
<param name="useheader" value="-1" />
<param name="FieldDelim" value="," />
<param name="RowDelim" value="" />
<param name="TextQualifier" value="" />
<param name="EscapeChar" value="" />
<param name="Sortascending" value="-1" />
<param name="SortColumn" value="" />
<param name="FilterValue" value="" />
<param name="FilterCriterion" value="" />
<param name="FilterColumn" value="" />
<param name="CharSet" value="hz-gb-2312" />
<param name="Language" value="" />
<param name="CaseSensitive" value="-1" />
<param name="Sort" value="" />
<param name="Filter" value="" />
<param name="appendData" value="0" />
<param name="DataURL" value="" />
<param name="ReadyState" value="4" />
</object>
(2)控件表格项
<table>
<tr>
<td>
<input type="button" value="查询" id="Search" />
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="button" value="第一页" id="FirstPage" />
</td>
<td>
<input type="button" value="上一页" id="PrevPage" />
</td>
<td>
<input type="button" value="下一页" id="NextPage" />
</td>
<td>
<input type="button" value="最后一页" id="LastPage" />
</td>
</tr>
<tr>
<td colspan="4">
<span id="ResultMessage"></span>
</td>
</tr>
</table>
(3)数据绑定到表格
datasrc为ActiveX控件的ID加上#符号;
datapagesize 为分页每页的记录数;
datafld 为当前HTML元素绑定的数据列;
<table datasrc="#dsoSoftware" datapagesize="10" id="software" border="1" width="98%"
cellspacing="0" cellpadding="0" style="display: none; border-collapse: collapse;
font-size: smaller">
<thead>
<tr>
<th width="200" bgcolor="#3366CC" height="22">
<font face="Arial" color="#ffffff">单位</font></th>
<th width="300" bgcolor="#3366CC" height="22">
<font face="Arial" color="#ffffff">书名</font></th>
<th width="200" bgcolor="#3366CC" height="22">
<font face="Arial" color="#ffffff">版别</font></th>
<th width="150" bgcolor="#3366CC" height="22">
<font face="Arial" color="#ffffff">书号</font></th>
</tr>
</thead>
<tr>
<td width="200">
<font face="Arial"><span datafld="单位"></span></font>
</td>
<td width="300">
<font face="Arial"><span datafld="书名"></span></font>
</td>
<td width="200">
<font face="Arial"><span datafld="版别"></span></font>
</td>
<td width="150">
<font face="Arial"><span datafld="书号"></span></font>
</td>
</tr>
</table>
(4)结果显示
<table>
<tr>
<td>
<span id="PageMessage"></span>
</td>
</tr>
</table>
(5)VBScript控制代码
<script language="vbscript" type="text/vbscript">
Dim rsCount '记录数
Dim pageCount '页数
Dim iPage '当前页
Sub FirstPage_onClick()
software.firstPage() '第一页
iPage=1
LastPage.disabled=false
NextPage.disabled=false
FirstPage.disabled=true
PrevPage.disabled=true
PageMessage.innerText="第"&iPage&"页"
End Sub
Sub PrevPage_onClick()
LastPage.disabled=false
NextPage.disabled=false
If iPage>1 Then
software.previousPage() '上一页
iPage=iPage-1
If iPage<2 Then
FirstPage.disabled=true
PrevPage.disabled=true
End If
End If
PageMessage.innerText="第"&iPage&"页"
End Sub
Sub NextPage_onClick()
FirstPage.disabled=false
PrevPage.disabled=false
If iPage<pageCount Then
software.nextPage() '下一页
iPage=iPage+1
If iPage>=pageCount Then
LastPage.disabled=true
NextPage.disabled=true
End If
End If
PageMessage.innerText="第"&iPage&"页"
End Sub
Sub LastPage_onClick()
software.lastPage() '最后一页
iPage=pageCount
LastPage.disabled=true
NextPage.disabled=true
FirstPage.disabled=false
PrevPage.disabled=false
PageMessage.innerText="第"&iPage&"页"
End Sub
Sub Search_onClick()
dsoSoftware.DataURL = "Data.aspx"
rsCount=0
FirstPage.style.display="none"
PrevPage.style.display="none"
NextPage.style.display="none"
LastPage.style.display="none"
software.style.display="none"
PageMessage.style.display="none"
ResultMessage.style.display="block"
ResultMessage.innerText="正在搜索数据..."
dsoSoftware.reset '搜索数据,可以理解为Su
End Sub
'数据搜索完毕
Sub dsoSoftware_onDataSetComplete()
FirstPage.disabled=true
PrevPage.disabled=true
rsCount=dsoSoftware.recordset.recordcount
If rsCount>0 Then
FirstPage.style.display="block"
PrevPage.style.display="block"
NextPage.style.display="block"
LastPage.style.display="block"
software.style.display="block"
ResultMessage.style.display="block"
PageMessage.style.display="block"
pageCount=rsCount\10-CBool(rsCount mod 10)
ResultMessage.innerText="共找到"&rsCount&"个符合搜索条件的结果 共"&pageCount&"页"
PageMessage.innerText="第1页"
iPage=1
If PageCount<2 Then
FirstPage.style.display="none"
PrevPage.style.display="none"
NextPage.style.display="none"
LastPage.style.display="none"
Else
NextPage.disabled=false
LastPage.disabled=false
End If
Else
FirstPage.style.display="none"
PrevPage.style.display="none"
NextPage.style.display="none"
LastPage.style.display="none"
software.style.display="none"
PageMessage.style.display="none"
ResultMessage.style.display="block"
ResultMessage.innerText="没有找到符合搜索条件的软件"
End If
End Sub