[原创]用SqlDataSource实现DropDownList的二级联动

SqlDataSource 是为我这种懒人设计的,我觉得~~~

它只需要指定连接串和SQL语句,就可以轻松实现控件的数据绑定。

想做一个二级联动的下拉列表,又不想写代码……所以就想方设法用这个SqlDataSource了~~~

(AccessDataSource和XmlDataSource之类的……触类旁通吧)

 

思路:

    二级联动,事实就是在第一个下拉列表选择了某项之后,第二个下拉列表根据这个选项来显示下一级的内容……从数据库方面说,就是先把第一个列表的内容显示出来,然后返回一个选择的值,再根据这个值去查第二个列表的内容……

网上应该有不少解法的,但是用SqlDataSource的可能就少了……

 

XX.aspx

...

<!-- 一级列表start -->

<asp:DropDownList

  ID="BoardList"

  DataSourceID="BoardSource"

  runat="server"

  DataTextField="board_Name"

  DataValueField="board_ID"

  AutoPostBack="true"></asp:DropDownList>


<asp:SqlDataSource

  ID="BoardSource"

  runat="server"

  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
  SelectCommand = "select board_ID, board_Name from LinkBoard"></asp:SqlDataSource>

<!-- 一级列表end -->

 

<!-- 二级列表start -->

<asp:DropDownList

   ID="ClsList" runat="server" ></asp:DropDownList>

 

<asp:SqlDataSource

  ID="ClsSource"

  runat="server"

  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"></asp:SqlDataSource>

<!-- 二级列表end -->

...

 

注:这里第二级列表貌似不可以直接就写绑定的参数,不然无论第一级怎么去PostBack,它都是没有反应,我怀疑它是绑好了就不更新了~~~

 

XX.aspx.cs

Page_Load()

{

        int bid;
        try
        {
            bid = Int32.Parse(BoardList.SelectedValue); //简单处理一下参数,不过好像意义不太大
        }
        catch { bid = 0; }
        ClsSource.SelectCommand = "Select Cls_ID, Cls_Name FROM LinkCls WHERE Cls_Board = " + bid;
        ClsList.DataSourceID = "ClsSource";
        ClsList.DataTextField="Cls_Name";
        ClsList.DataValueField = "Cls_ID";
        ClsList.DataBind();

...

}

 

核心代码如上,应该思路还是很清晰的~~~

 

 

阅读更多
个人分类: Asp|Asp.net
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭