这里先说asp的吧,然后再说C#与二级联动的,其实ajax调用的代码都是一样的。只是把发送request的文件.php改成.asp或者.aspx!
在上篇的blog中,
PHP AJAX二级联动演示-城市地区 ,是PHP +AJAX的二级联动,我今天再把ASP和ajax联动二级菜单的也写出来,其实大体代码所差没什么。
所使用的表的结构和MYSQL的结构一模一样,只是在access或者MSSQL中使用的话效果比较好一点。我这里就省略不说了。
第一步:创建一个读取该数据库的asp文件,输出XML格式的数据: <!--#include file="inc/conn.asp"-->
<!--#include file="inc/system31.asp"-->
<!--#include file="inc/system35.asp"-->
<%
Response.Clear()
Response.ContentType = "text/xml"
Response.ContentType = "application/xml"
Response.Charset ="utf-8"
response.write("<?xml version=""1.0"" encoding=""utf-8""?>")
response.write("<ClassLists>")
arrs= GetRows("select [id],[name] from [citys] where [pid]=" & killint(request("id"),0,0,6))
if isarray(arrs) Then
Dim ai,arrmess
arrmess=""
for ai=0 to ubound(arrs,2)
arrmess = arrmess &"<List><id>"&arrs(0,ai)&"</id><name><![CDATA["&trim(arrs(1,ai))&"]]></name></List>"
Next
response.write(arrmess)
End if
response.write("</ClassLists>")
%>
所使用的思路还是输出XML文件,输出的格式完全和上一讲一样:
<?xml version="1.0" encoding="utf-8"?><ClassLists><List><id>3</id><name>BEIJING</name></List><List><id>4</id><name>SHANGHAI</name></List></ClassLists>
第二步:创建需要使用联动的表单;
第三步:使用javascript处理请求并表现给XML。
(与上一话完全一致,这里不再赘言)
C#的读取数据列表显示为XML的代码为:
private void data_load(Object o,System.EventArgs e){
this.Controls.Clear();
string pidS=Request.QueryString["pid"];
if(String.IsNullOrEmpty(pidS)) return;
int pid=App.Cout.CInt(pidS);
string sqlWhere = " [pid]=" + pid.ToString();
IDataReader Idr =OTr.GetDataReader(sqlWhere,"[id],[name]");
if(Idr==null) return;
Response.ContentType = "text/xml";
Response.Clear();
Response.Charset ="utf-8";
Response.BufferOutput = true;
XmlTextWriter writer = null;
try{
writer=new XmlTextWriter(Response.OutputStream,App.Settings.DefaultEncoding);//Response.ContentEncoding
writer.Formatting =Formatting.Indented;
writer.Indentation =0;
writer.IndentChar ='\t';
writer.WriteStartDocument();
writer.WriteStartElement("ClassLists");
writer.WriteComment("Dealsphere.com Update At " + System.DateTime.Now.ToString());
while (Idr.Read()){
writer.WriteStartElement("List");
writer.WriteElementString("id",Idr[0].ToString());
writer.WriteElementString("name",Idr[1].ToString());
writer.WriteEndElement();
}
Idr.Close();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
}catch(Exception ex){
throw new Exception(ex.Message);
}finally{
if(writer!=null) writer.Close();
}
Response.Flush();
}
其中获取列表的OTr.GetDataReader方法的原型就是:
public IDataReader GetDataReader(string wherestr ,string cols ){
return Cdb.Conn.GetDataReader(String.Format(Cdb.ObjSqlText.SelectFromWhere,String.IsNullOrEmpty(cols)?"*":cols,"dd_trade",(String.IsNullOrEmpty(wherestr)?"(1=1)":wherestr)+" order by trade_order desc"));
}
已经说的够啰嗦了,不说了,有疑问的在群里面再谈谈吧。
天气:大雨,ccdot发表于2008-4-19 14:37:39,阅读了1228次,共有个0回复.