ASP.NET中使用DropDownList实现无刷新二级联动详细过程

时间:2023-03-08 16:33:52
ASP.NET中使用DropDownList实现无刷新二级联动详细过程

Demo.sql

 create table Car(
[id] int identity,
[brand] varchar(50) not null,
[type] varchar(50) not null
)
go insert into Car ([brand],[type])values('BMW','B'),('BMW','M'),('BMW','W'),
('BENZ','B'),('BENZ','E'),('BENZ','N'),('BENZ','Z'),
('HONDA','H'),('HONDA','O'),('HONDA','N'),('HONDA','D'),('HONDA','A'),
('TOYOTA','T'),('TOYOTA','O'),('TOYOTA','Y'),('TOYOTA','A')

Demo.aspx

         <asp:ScriptManager runat="server">
</asp:ScriptManager>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:DropDownList ID="dropBrand" runat="server" OnSelectedIndexChanged="dropBrand_SelectedIndexChanged"
Width="" AutoPostBack="True">
</asp:DropDownList>
<asp:DropDownList ID="dropType" runat="server" Width="">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>

Demo.aspx.cs

         protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDrop();
}
} private void BindDrop()
{
//将数据捆绑到下拉列表中
string sqlStr = "select distinct [brand] from Car";
DataTable dt = SqlHelper.ExecuteDataTable(sqlStr);
dropBrand.DataTextField = "brand"; //设置列表显示的字
dropBrand.DataValueField = "brand"; //设置列表提交后获得的字段,自己理解为隐藏绑定数据
dropBrand.DataSource = dt;
dropBrand.DataBind();
dropBrand.Items.Insert(, new ListItem("请选择车子品牌", ""));//第一项中加入内容,重点是绑定后添加
dropType.Items.Insert(, new ListItem("请选择车子品牌型号", ""));//第一项中加入内容,重点是绑定后添加
} protected void dropBrand_SelectedIndexChanged(object sender, EventArgs e)
{
string sqlStr = "select * from Car where [brand]='" + dropBrand.SelectedValue + "'";//页面加载后dropBrand.DataValueField隐藏绑定的数据,后边根据它查询dropType要显现的数据
DataTable dt = SqlHelper.ExecuteDataTable(sqlStr);
dropType.DataTextField = "type"; //设置dropBrand事件SelectedIndexChanged改变后dropType列表显示的数据
dropType.DataValueField = "id";
dropType.DataSource = dt;
dropType.DataBind();
}

参考原文:http://www.cnblogs.com/cqchai/archive/2011/05/28/2061378.html