2002-09-13 14:17
一个用webservice behavior实现的三级联动下拉列表框
我做了一个三级联动的下拉列表框,后台用webservice,前台用webservice
behavior与后台通讯。请高手们多提改进意见。
server端:(service1.asmx.cs)
using System;
using
System.Text;
using System.Configuration;
using
System.Collections;
using System.ComponentModel;
using
System.Data;
using System.Data.SqlClient;
using
System.Diagnostics;
using System.Web;
using
System.Web.Services;
namespace WebService1
{
///
<summary>
/// Summary description for Service1.
///
</summary>
public class Service1 :
System.Web.Services.WebService
{
SqlConnection con;
public Service1()
{
//CODEGEN: This call is
required by the ASP.NET Web Services
Designer
InitializeComponent();
}
#region Component Designer generated code
///
<summary>
/// Required method for Designer support - do not
modify
/// the contents of this method with the code editor.
///
</summary>
private void
InitializeComponent()
{
string dsn =
ConfigurationSettings.AppSettings["yitong"];
con=new
SqlConnection(dsn);
}
#endregion
/// <summary>
/// Clean up any resources being
used.
/// </summary>
protected override void Dispose( bool
disposing )
{
}
[WebMethod]
public string fenlei()
{
string
str="select distinct substring(code,1,3) as fenlei from jinan
";
SqlCommand cmd=new SqlCommand(str,con);
cmd.Connection.Open();
SqlDataReader
dr=cmd.ExecuteReader();
string s="请选择:";
while(dr.Read())
{
s +=
","+dr["fenlei"].ToString();
}
return s;
}
[WebMethod]
public string leixing(string
q)
{
string str="select distinct type from jinan where code like
'"+q+"%'";
SqlCommand cmd=new SqlCommand(str,con);
cmd.Connection.Open();
SqlDataReader
dr=cmd.ExecuteReader();
string s="请选择:";
while(dr.Read())
{
s +=
","+dr["type"].ToString();
}
return s;
}
[WebMethod]
public string haoduan(string
q)
{
string str="select distinct substring(code,4,4) as haoduan
from jinan where type='"+q+"'";
SqlCommand cmd=new SqlCommand(str,con);
cmd.Connection.Open();
SqlDataReader
dr=cmd.ExecuteReader();
string s="请选择:";
while(dr.Read())
{
s +=
","+dr["type"].ToString();
}
return s;
}
client端(htmlpage1.htm)
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
>
<HTML>
<HEAD>
<META NAME="GENERATOR"
Content="Microsoft Visual Studio
7.0">
<TITLE></TITLE>
<script
id="clientEventHandlersJS" language="javascript">
<!--
var
icallid;
var icallid1;
var icallid2;
function window_onload()
{
service.useService("/service1.asmx?WSDL","myselect");
icallid=service.myselect.callService(fenlei,"fenlei");
}
function fenlei(result)
{
var
m=result.value;
var a=m.split(",")
for(var
i=0;i<a.length;i++)
{
window.s1.options=new
Option(a,a);
}
}
function s1_onchange() {
var
x=s1.value;
icallid1=service.myselect.callService(leixing,"leixing",x);
}
function s2_onchange() {
var
x=s2.value;
icallid2=service.myselect.callService(haoduan,"haoduan",x);
}
function leixing(result){
var m=result.value;
var
a=m.split(",")
window.s2.length=0;
for(var
i=0;i<a.length;i++)
{
window.s2.options=new
Option(a,a);
}
}
function haoduan(result){
var m=result.value;
var
a=m.split(",")
window.s3.length=0;
for(var
i=0;i<a.length;i++)
{
window.s3.options=new
Option(a,a);
}
}
//-->
</script>
</HEAD>
<BODY
onload="return window_onload()">
<div id="service"
style="behavior:url(webservice.htc)">
</div>
<select
id="s1" onchange="return s1_onchange()"> </select><select id="s2"
onchange="return s2_onchange()"></select>
<select
id="s3"></select>
</HTML>