在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 >
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
Sub Window_onError(msg,url,line)
ResultMessage.innerHTML="<b>网页产生了一个错误。</b><p>"
ResultMessage.innerHTML=ResultMessage.innerHTML+"错误描述: " + msg + "<br>"
ResultMessage.innerHTML=ResultMessage.innerHTML+"行:" + line + "<br>"
ResultMessage.innerHTML=ResultMessage.innerHTML+"链接:" + url + "<br>"
End Sub
</script>
总结:
- 最早我看到使用这个控件的网页是微软全球下载中心。
- 该控件是可以绑定Text文本框的,其他HTML控件也可以。
- 为什么这个控件没有再用了。估计是因为功能还是简单了点。