先建立2个表
-- 父表
create table tb_parent(
-- 主键
ids int constraint pk_tb_parent_ids primary key ,
parentName nvarchar ( 1000 )
)
go
insert into tb_parent
select 1 , ' aaa '
union all
select 2 , ' bbb '
union all
select 3 , ' ccc '
go
-- 子表
create table tb_child(
parentId int ,
childId int ,
childName nvarchar ( 1000 ),
-- parentId外键
constraint fk_tb_child_tb_parent_parentId
FOREIGN KEY (parentId)
REFERENCES tb_parent(ids)
)
go
insert into tb_child
select 1 , 101 , ' a_1 '
union all
select 1 , 102 , ' a_2 '
go
insert into tb_child
select 2 , 201 , ' b_1 '
union all
select 2 , 202 , ' b_2 '
go
insert into tb_child
select 3 , 301 , ' c_1 '
union all
select 3 , 302 , ' c_2 '
union all
select 3 , 303 , ' c_3 '
go
再创建3个过程
-- 得到父表数据
create proc proc_GetparentData
as
SELECT [ ids ] , [ parentName ]
FROM [ tb_parent ]
go
-- 得到子表数据
create proc proc_GetchildData
as
SELECT [ parentId ] , [ childId ] , [ childName ]
FROM [ tb_child ]
go
-- 由父id得到子表数据
create proc proc_GetchildDataBYparentId
@parentId int
as
SELECT [ parentId ] , [ childId ] , [ childName ]
FROM [ tb_child ]
where parentId = @parentId
go
WebForm5.aspx
1
<%
@ Page language
=
"
c#
"
Codebehind
=
"
WebForm5.aspx.cs
"
AutoEventWireup
=
"
false
"
Inherits
=
"
webtest.WebForm5
"
%>
2 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3 < HTML >
4 < HEAD >
5 < title > WebForm5 </ title >
6 < meta content ="Microsoft Visual Studio .NET 7.1" name ="GENERATOR" >
7 < meta content ="C#" name ="CODE_LANGUAGE" >
8 < meta content ="JavaScript" name ="vs_defaultClientScript" >
9 < meta content ="http://schemas.microsoft.com/intellisense/ie5" name ="vs_targetSchema" >
10 </ HEAD >
11 < body MS_POSITIONING ="GridLayout" >
12 < form id ="Form1" method ="post" runat ="server" >
13 父: < asp:dropdownlist id ="DropDownList_parent" runat ="server" onChange ="changevalue(document.Form1.DropDownList_parent.options[document.Form1.DropDownList_parent.selectedIndex].value)"
14 Width ="272px" ></ asp:dropdownlist >
15 < br >
16 子: < asp:dropdownlist id ="DropDownList_child" runat ="server" Width ="272px" ></ asp:dropdownlist >
17 < br >
18 < asp:label id ="msgLabel" runat ="server" Width ="416px" ></ asp:label >
19 < br >
20 < asp:Button id ="Buttonok" runat ="server" Text ="click" ></ asp:Button ></ form >
21 </ body >
22 </ HTML >
2 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3 < HTML >
4 < HEAD >
5 < title > WebForm5 </ title >
6 < meta content ="Microsoft Visual Studio .NET 7.1" name ="GENERATOR" >
7 < meta content ="C#" name ="CODE_LANGUAGE" >
8 < meta content ="JavaScript" name ="vs_defaultClientScript" >
9 < meta content ="http://schemas.microsoft.com/intellisense/ie5" name ="vs_targetSchema" >
10 </ HEAD >
11 < body MS_POSITIONING ="GridLayout" >
12 < form id ="Form1" method ="post" runat ="server" >
13 父: < asp:dropdownlist id ="DropDownList_parent" runat ="server" onChange ="changevalue(document.Form1.DropDownList_parent.options[document.Form1.DropDownList_parent.selectedIndex].value)"
14 Width ="272px" ></ asp:dropdownlist >
15 < br >
16 子: < asp:dropdownlist id ="DropDownList_child" runat ="server" Width ="272px" ></ asp:dropdownlist >
17 < br >
18 < asp:label id ="msgLabel" runat ="server" Width ="416px" ></ asp:label >
19 < br >
20 < asp:Button id ="Buttonok" runat ="server" Text ="click" ></ asp:Button ></ form >
21 </ body >
22 </ HTML >
WebForm5.aspx.cs
1
using
System;
2 using System.Collections;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Data.SqlClient;
6 using System.Drawing;
7 using System.Web;
8 using System.Web.SessionState;
9 using System.Web.UI;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.HtmlControls;
12 using System.Text;
13
14 using Microsoft.ApplicationBlocks.Data;
15
16 namespace webtest
17 {
18 public class WebForm5 : System.Web.UI.Page
19 {
20 protected System.Web.UI.WebControls.DropDownList DropDownList_parent;
21 protected System.Web.UI.WebControls.DropDownList DropDownList_child;
22
23 protected System.Web.UI.WebControls.Label msgLabel;
24 protected System.Web.UI.WebControls.Button Buttonok;
25
26 readonly string conString="uid=sa;pwd=123;database=TestDataBase";
27
28 private void Page_Load(object sender, System.EventArgs e)
29 {
30 regJS();
31 Bind();
32 }
33
34 private void regJS()
35 {
36 SqlDataReader rs=this.GetchildData();
37 StringBuilder sb=new StringBuilder(1000);
38
39 sb.Append("<Script Language=JavaScript>");
40 sb.Append(Environment.NewLine);
41
42 sb.Append("arr=new Array();");
43 sb.Append(Environment.NewLine);
44
45 int i=0;
46 while(rs.Read())
47 {
48 sb.AppendFormat("arr[{0}]=new Array('{1}','{2}','{3}')",i,rs["parentId"],rs["childId"],rs["childName"]);
49 sb.Append(Environment.NewLine);
50 i=i+1;
51 }
52
53 if ( !rs.IsClosed )
54 {
55 rs.Close();
56 }
57
58 sb.Append(Environment.NewLine);
59 sb.AppendFormat("var counts={0}",i);
60 sb.Append(Environment.NewLine);
61 sb.Append("function changevalue(parentId)");
62 sb.Append(Environment.NewLine);
63 sb.Append("{");
64 sb.Append(Environment.NewLine);
65 sb.Append("document.Form1.DropDownList_child.length = 0;");
66 sb.Append(Environment.NewLine);
67 sb.Append("var i;");
68 sb.Append(Environment.NewLine);
69 sb.Append("for(i=0; i<counts; i++)");
70 sb.Append(Environment.NewLine);
71 sb.Append("{");
72 sb.Append(Environment.NewLine);
73 sb.Append("if(arr[i][0]==parentId)");
74 sb.Append(Environment.NewLine);
75 sb.Append("{");
76 sb.Append(Environment.NewLine);
77 sb.Append("document.Form1.DropDownList_child.options[document.Form1.DropDownList_child.length]=new Option(arr[i][2],arr[i][1]);");
78 sb.Append(Environment.NewLine);
79 sb.Append("}");
80 sb.Append(Environment.NewLine);
81 sb.Append("}");
82 sb.Append(Environment.NewLine);
83 sb.Append("}");
84 sb.Append(Environment.NewLine);
85 sb.Append("</script>");
86
87 if( !Page.IsClientScriptBlockRegistered("jsScript"))
88 {
89 this.RegisterClientScriptBlock("jsScript",sb.ToString());
90 }
91 }
92
93 void Bind()
94 {
95 //获得父表
96 this.DropDownList_parent.DataSource=SqlHelper.ExecuteReader(conString,CommandType.StoredProcedure,"proc_GetparentData");
97 this.DropDownList_parent.DataTextField="parentName";
98 this.DropDownList_parent.DataValueField="ids";
99 this.DropDownList_parent.DataBind();
100
101 //根据父表id得子表
102 this.DropDownList_child.DataSource=GetchildData(Convert.ToInt32(this.DropDownList_parent.SelectedValue));
103 this.DropDownList_child.DataTextField="childName";
104
2 using System.Collections;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Data.SqlClient;
6 using System.Drawing;
7 using System.Web;
8 using System.Web.SessionState;
9 using System.Web.UI;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.HtmlControls;
12 using System.Text;
13
14 using Microsoft.ApplicationBlocks.Data;
15
16 namespace webtest
17 {
18 public class WebForm5 : System.Web.UI.Page
19 {
20 protected System.Web.UI.WebControls.DropDownList DropDownList_parent;
21 protected System.Web.UI.WebControls.DropDownList DropDownList_child;
22
23 protected System.Web.UI.WebControls.Label msgLabel;
24 protected System.Web.UI.WebControls.Button Buttonok;
25
26 readonly string conString="uid=sa;pwd=123;database=TestDataBase";
27
28 private void Page_Load(object sender, System.EventArgs e)
29 {
30 regJS();
31 Bind();
32 }
33
34 private void regJS()
35 {
36 SqlDataReader rs=this.GetchildData();
37 StringBuilder sb=new StringBuilder(1000);
38
39 sb.Append("<Script Language=JavaScript>");
40 sb.Append(Environment.NewLine);
41
42 sb.Append("arr=new Array();");
43 sb.Append(Environment.NewLine);
44
45 int i=0;
46 while(rs.Read())
47 {
48 sb.AppendFormat("arr[{0}]=new Array('{1}','{2}','{3}')",i,rs["parentId"],rs["childId"],rs["childName"]);
49 sb.Append(Environment.NewLine);
50 i=i+1;
51 }
52
53 if ( !rs.IsClosed )
54 {
55 rs.Close();
56 }
57
58 sb.Append(Environment.NewLine);
59 sb.AppendFormat("var counts={0}",i);
60 sb.Append(Environment.NewLine);
61 sb.Append("function changevalue(parentId)");
62 sb.Append(Environment.NewLine);
63 sb.Append("{");
64 sb.Append(Environment.NewLine);
65 sb.Append("document.Form1.DropDownList_child.length = 0;");
66 sb.Append(Environment.NewLine);
67 sb.Append("var i;");
68 sb.Append(Environment.NewLine);
69 sb.Append("for(i=0; i<counts; i++)");
70 sb.Append(Environment.NewLine);
71 sb.Append("{");
72 sb.Append(Environment.NewLine);
73 sb.Append("if(arr[i][0]==parentId)");
74 sb.Append(Environment.NewLine);
75 sb.Append("{");
76 sb.Append(Environment.NewLine);
77 sb.Append("document.Form1.DropDownList_child.options[document.Form1.DropDownList_child.length]=new Option(arr[i][2],arr[i][1]);");
78 sb.Append(Environment.NewLine);
79 sb.Append("}");
80 sb.Append(Environment.NewLine);
81 sb.Append("}");
82 sb.Append(Environment.NewLine);
83 sb.Append("}");
84 sb.Append(Environment.NewLine);
85 sb.Append("</script>");
86
87 if( !Page.IsClientScriptBlockRegistered("jsScript"))
88 {
89 this.RegisterClientScriptBlock("jsScript",sb.ToString());
90 }
91 }
92
93 void Bind()
94 {
95 //获得父表
96 this.DropDownList_parent.DataSource=SqlHelper.ExecuteReader(conString,CommandType.StoredProcedure,"proc_GetparentData");
97 this.DropDownList_parent.DataTextField="parentName";
98 this.DropDownList_parent.DataValueField="ids";
99 this.DropDownList_parent.DataBind();
100
101 //根据父表id得子表
102 this.DropDownList_child.DataSource=GetchildData(Convert.ToInt32(this.DropDownList_parent.SelectedValue));
103 this.DropDownList_child.DataTextField="childName";
104