这篇博客主要说一下DropDownList绑定数据库表中数据,及选择相应DropDownList表中的值会根据此值从数据库中查询相应的数据信息。
一、简单介绍一下我要实现的功能
我要实现的功能简单界面:
我要实现的功能:校区旁边的下拉列表我使用的是DropDownList控件,页面加载时DropDownList会绑定从数据库中查询出的校区信息,然后根据校区值的选取,在下面多标签栏中显示相应的建筑信息。
二、简单介绍下DropDownList绑定数据及根据其值查询建筑信息的实现
1.在.aspx页面拖入DropDownList控件
- <label class="txt-green">校区:</label>
- <asp:DropDownList ID="ddlCampus" Width="120px" Height="25px" runat="server"
- AutoPostBack="True" onselectedindexchanged="ddlCampus_SelectedIndexChanged">
- </asp:DropDownList>
2.在.aspx.cs页面中,编写DropDownList绑定数据库表值的方法
我采用三层架构方法,这里只介绍界面层的实现
- #region 绑定现存校区信息
- private void bindCampus()
- {
- //调用建筑业务逻辑层,查询现存校区信息
- DataTable dtCampus = new BuildingBLL().QueryCampus();
- //绑定校区信息,并添加新行
- //绑定校区信息
- ddlCampus.DataSource = dtCampus;
- //校区名
- ddlCampus.DataTextField = "CampusName";
- //校区ID
- ddlCampus.DataValueField = "CampusID";
- ddlCampus.DataBind();
- ddlCampus.Items.Insert(0, new ListItem("", ""));//插入空项,此项必须放到数据绑定之后
- }
- #endregion
3.在.aspx.cs页面的Form_Load事件中调用DropDownList绑定数据库表值的方法
- protected void Page_Load(object sender, EventArgs e)
- {
- //页面第一次加载时;必须加上 if (!IsPostBack),
- //否则校区下拉列表根据指定校区查询建筑信息,校区只会绑定校区下拉列表首行数据的ID
- if (!IsPostBack)
- {
- //绑定现存校区信息
- bindCampus();
- //绑定查询所有建筑信息(校区ID为空)
- bindAllBuilding();
- }
- }
4.根据DropDownList中选择的值,相应显示查询的建筑信息的实现方法
更改DropDownList的AutoPostBack属性值为True。然后再DropDownList的“SelectedIndexChanged”事件中编写查询建筑信息的方法。
- //随着下拉框中值的改变,选择相应的现存、已撤销、彻底删除信息
- protected void ddlCampus_SelectedIndexChanged(object sender, EventArgs e)
- {
- //获取下拉框校区名对应的校区ID:下面两行代码都可用
- string strCampusID = ddlCampus.SelectedItem.Value;
- //string strCampusID1 = ddlCampus.SelectedValue;
- //校区实体
- CampusEntity enCampus = new CampusEntity();
- if ("" == strCampusID)
- {
- //如果校区为空,则查询各校区全部现存、已撤销、彻底删除的建筑信息
- //校区ID为空
- enCampus.CampusID = "";
- #region 绑定现存、已撤销、彻底删除全部建筑信息
- //现存信息
- //调用BLL层查询现存建筑信息的方法
- DataTable dtBuilding = new BuildingBLL().QueryBuilding(enCampus);
- //绑定现存建筑信息
- repNowBuilding.DataSource = dtBuilding;
- repNowBuilding.DataBind();
- // 绑定撤销建筑信息
- repCanceledBuilding.DataSource = new BuildingBLL().QueryCancelBuilding(enCampus);
- repCanceledBuilding.DataBind();
- // 绑定彻底删除的课程类型数据数据
- repDeletedBuilding.DataSource = new BuildingBLL().QueryDeleteBuilding(enCampus);
- repDeletedBuilding.DataBind();
- #endregion
- }
- else
- {
- //如果校区不为空,则查询相应校区的现存、已撤销、彻底删除的建筑信息
- //校区ID不为空,校区ID来自下拉列表选择的值
- enCampus.CampusID = strCampusID;
- #region 绑定现存、已撤销、彻底删除全部建筑信息
- //现存信息
- //调用BLL层查询现存建筑信息的方法
- DataTable dtBuilding = new BuildingBLL().QueryBuilding(enCampus);
- //绑定现存建筑信息
- repNowBuilding.DataSource = dtBuilding;
- repNowBuilding.DataBind();
- // 绑定撤销建筑信息
- repCanceledBuilding.DataSource = new BuildingBLL().QueryCancelBuilding(enCampus);
- repCanceledBuilding.DataBind();
- // 绑定彻底删除的课程类型数据数据
- repDeletedBuilding.DataSource = new BuildingBLL().QueryDeleteBuilding(enCampus);
- repDeletedBuilding.DataBind();
- #endregion
- }
- }
-
注意点:1.DropDownList列表绑定数据时添加空行的实现。只一行代码
2.因需要根据下拉列表选定值查询相应建筑信息,于是将AutoPostBack属性置为True,这时需要在Form_Load中加上if(!IsPostBack)的判断,不加入此判断,“SelectedIndexChanged”事件中校区ID会一直获取的是下拉列表的首行ID。
原文地址:http://blog.youkuaiyun.com/mazhaojuan/article/details/8529782