`
izuoyan
  • 浏览: 8914262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ASP.NET两级联动下拉框

阅读更多

  介绍一个刚做的例子吧!

  用户在提出问题时需要选择对象机构,而对象机构的分类在一个叫做category的表中保存。下面介绍一下用户从分类下拉框中选择分类后出现机构下拉框。

  前台页面中放置两个下拉框:

分类:<asp:dropdownlist id="ddlCategoryid" runat="server" AutoPostBack="True">

</asp:dropdownlist>

AutoPostBack="True" 这个是关键,它的存在将会触发机构下拉框的改变

机构:<asp:dropdownlist id="ddlorgid" runat="server"></asp:dropdownlist>

  后台页面代码:

//绑定机构类别信息

if(!this.Page.IsPostBack)

{
DataTable dtCategory = new DataTable(); //新建DataTable用来保存从数据库中取到的数据
CategoryDao cDao = new CategoryDao(); //这里是我用的一个构架,对一个数据库操作类的实例化,以及使用该类的一个方法,不用此方法的朋友可以自己写连接数据库的语句。
dtCategory = cDao.GetCategoryTable(9,true); //检索数据库操作,将检索的数据保存到DataTable实例中。
ddlCategoryid.DataSource = dtCategory; //将数据绑定到分类下拉列表中
ddlCategoryid.DataTextField = "categoryName";
ddlCategoryid.DataValueField = "categoryID";
ddlCategoryid.DataBind();

}

  在Web 窗体设计器中需要加入ddlCategoryid的SelectedIndexChanged事件

this.ddlCategoryid.SelectedIndexChanged += new System.EventHandler(this.ddlCategoryid_SelectedIndexChanged);

  接下来就是写入SelectedIndexChanged事件的代码:

protected void ddlCategoryid_SelectedIndexChanged(object sender, EventArgs e)
{
//绑定机构信息
DataTable dtOrg = new DataTable();
OrganizationDao orgDao = new OrganizationDao();
dtOrg = orgDao.GetRootOrganizationInfo(Convert.ToInt32(this.ddlCategoryid.SelectedValue.ToString()));
ddlorgid.DataSource = dtOrg;
ddlorgid.DataTextField = "orgname";
ddlorgid.DataValueField = "orgid";
ddlorgid.DataBind();
}

  其中this.ddlCategoryid.SelectedValue就是选中的分类的代码。

  当然熟悉AJAX的朋友也可以用AJAX的方式实现,而且是不刷新页面(很酷),但是ajax 的实现是需要将所需要的下拉列表内容提前写好的。将需要的资源从数据库中取出来写到一个页面中(当然也可以写到XML中),将该页面引用后就可以实现AJAX的方式了,这个做法原来在用ASP的时候用过,需要从数据库中把可能用到的数据全部提出来,写起来很长,这里就不多说了,感兴趣的朋友可以告诉我,有时间把它翻出来给大家

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics