首先先思考下如果不使用DropdownList控件,如何将一个List集合中的数据通过下拉框(select标签)的形式显示?
使用下拉框(纯select方式)实现分类数据的显示
步骤:
处理后端:
①在后端代码中定义一个公开的userID变量,用于保存url中获取到的userID
public static int userID ;
②先判断url中是否存在userID对应的值
if (!string.IsNullOrEmpty(Request.QueryString["userID"])) { userID = int.Parse(Request.QueryString["userID"]); }
③根据获取到的userID显示对应类型的数据(如果url中没有userID值,默认为1,Dal会做相应处理,为1会返回所有类型数据)
Repeater1.DataSource = BLL_User.getUserByType(userID); Repeater1.DataBind();
****因为这里顺便练习三成构架所以用到了三层需要也可以进行相应的更改 附上getUserByType() 的连套方法:
//BLL层public static ListgetUserByType(int id) {return DAL_User.getUserByType(id); }//DAL层public static ListgetUserByType(int id) {string sql = $"userType ={id}";if (id ==1) { sql = ""; } Listuers = SelectSQL(sql);return uers; }public static ListSelectSQL(string strWhere) {string sql = ""; _users = new List();if (strWhere == "") { sql = "select * from UserInfo where isShow=1"; }else{ sql = $"select * from UserInfo where isShow=1 and " + strWhere; } DataTable td = new DBHerple().SelectDataTable(sql); User user = null;foreach (DataRow dataRow in td.Rows) { user = new User(); user.userID = int.Parse(dataRow["userID"].ToString()); user.userName = dataRow["userName"].ToString(); user.userPwd = dataRow["userPWd"].ToString(); user.userAddress = dataRow["userAddress"].ToString(); user.userType = int.Parse(dataRow["userType"].ToString()); _users.Add(user);//添加到集合中去 }return _users; }
处理前端:
①在前端页面实现select代码
②使用
<form id="form1" runat="server"><select id="slct" onchange="SelectType(this)"><% foreach (var item in userType) {%><option <%=(userID == item.typeID ? "selected":"") %> value="">select><table class="layui-table user-table">序号账户密码地址操作<asp:Repeater ID="Repeater1" runat="server"><%# Eval("userID") %><%# Eval("userName") %><%# Eval("userPWd") %><%# Eval("userAddress") %><asp:Button CssClass="layui-btn layui-btn-danger" ID="Button1" runat="server" Text="删 除" />
③使用onchangge事件实现下拉框中选项改变之后的数据回发(userID的回发)
function SelectType(e) {//回发数据到当前页面的后端location.href = "SelectDemo.aspx?userID=" + e.value; }" _ue_custom_node_="true">
④转到后端获取userID的值 判断url中是否存在userID对应的值如果有就获取userID
if (!string.IsNullOrEmpty(Request.QueryString["userID"])) { userID = int.Parse(Request.QueryString["userID"]); } }
⑤
最终效果图:
但是如果用asp的DropDownList控件的话就简单多了
①:我们先拖入控件到前端中去(唯一要注意的一点是拖动控件到前端的时候一定一定要添加:AutoPostBack="true" 属性不然你后台代码写的在好都不会回发)
②:转到后台:
为下拉框添加事件 getUserByType()方法和上面的一样
protected void Page_Load(object sender, EventArgs e) {if (!IsPostBack) { Listusers = BLL_User.getAllUser();this.DropDownList1.DataSource = BLL_User.getTypeAll();this.DropDownList1.SelectedIndex = 0;//int值this.DropDownList1.DataTextField = "TypeName";this.DropDownList1.DataValueField = "TypeID";this.DropDownList1.DataBind(); } Repeater1.DataSource = BLL_User.getAllUser(); Repeater1.DataBind(); }/// /// 下拉框选项改变后触发信息变动/// /// /// protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) {int id = int.Parse(this.DropDownList1.SelectedValue); Repeater1.DataSource = BLL_User.getUserByType(id); Repeater1.DataBind(); }
然后就大功告成了
虽然我们这个控件方便了我们的使用但是我们也要了解一下原生没有控件我们应该怎么办 藏器在身,待时而动。
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4