<%@ Page Language="C#" %>
<%@ Import namespace="System" %>
<%@ Import namespace="System.Data" %>
<%@ Import namespace="System.IO" %>
<script language="C#" runat="server">
//用数组模拟数据库
String [] arrCol = {"customerid", "companyname", "contactname", "country", "city", "address", "phone"};
String [] arrCustomer = {
"ALFKI Alfreds Futterkiste Maria Anders Germany Berlin Obere Str. 57 030-0074321",
"ANATR Ana Trujillo Emparedados y helados Ana Trujillo Mexico Mexico D.F. Avda. de la Constitucion 2222 (5) 555-4729",
"ANTON Antonio Moreno Taquería Antonio Moreno Mexico Mexico D.F. Mataderos 2312 (5) 555-3932",
"AROUT Around the Horn Thomas Hardy UK London 120 Hanover Sq. (171) 555-7788",
"BERGS Berglunds snabbkp Christina Berglund Sweden Lule Berguvsvgen 8 0921-12 34 65",
...(略)
};
public void Page_Load(Object sender, EventArgs e) {
//取得搜索的子串
String substr = Request.Params["substr"];
if(substr==null) return;
//同时也允许分页
int nRows = -1;
int nStart = -1;
String Rows = Request.QueryString["Rows"];
String StartRow = Request.QueryString["startRow"];
if(Rows!=null) nRows = Int32.Parse(Rows);
if(StartRow!=null) nStart = Int32.Parse(StartRow);
if(nStart == -1) {
String Page = Request.QueryString["page"];
if(Page!=null) {
int nPage = Int32.Parse(Page);
if(nPage >= 0) nStart = nPage * nRows;
}
}
//不分页的==================
if(nStart == -1) {
for(int i=0; i<arrCustomer.Length; i++) {
String s = arrCustomer[i];
if(s.IndexOf(substr, StringComparison.CurrentCultureIgnoreCase)==-1) continue;
Response.Write(s + "\r\n");
}
Response.ContentType = "text/plain";
return;
}
//分页的==================
//总行数
int TotalRows = 0;
for(int i=0; i<arrCustomer.Length; i++) {
String s = arrCustomer[i];
if(s.IndexOf(substr, StringComparison.CurrentCultureIgnoreCase)==-1) continue;
TotalRows++;
}
Response.Write("<root>");
Response.Write("<totalrows>" +TotalRows.ToString()+ "</totalrows>");
Response.Write("<table>");
int count=0;
int nRow=0;
for(int i=0; i<arrCustomer.Length; i++) {
String s = arrCustomer[i];
if(s.IndexOf(substr, StringComparison.CurrentCultureIgnoreCase)==-1) continue;
nRow++;
if(nRow < nStart) continue;
Response.Write("<row>");
String [] arr = s.Split(new Char[] { '\t' });
for(int j=0; j<7; j++) {
Response.Write("<" + arrCol[j] + ">");
String s1="";
if(j < arr.Length) s1 = arr[j];
s1 = s1.Replace("&", "&");
Response.Write(s1);
Response.Write("</" + arrCol[j] + ">");
}
Response.Write("</row>");
count++;
if(count >= nRows) break;
}
Response.Write("</table>");
Response.Write("</root>");
Response.ContentType ="text/xml";
Response.CacheControl="no-cache";
Response.End();
}
</script>