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();
...
}
核心代码如上,应该思路还是很清晰的~~~