.NET ------ 实现点击下拉框选择一类后出现复选框
如:求职中有 人力资源类,IT 类等,IT 类又有 .NET 开发,Java开发,运维等
实现:下拉框展示总体类别,复选框展示选中类别中的详细
主要方式:选中下拉框内容时出发复选框控件,将属于某一类的全部查出
一、页面数据展示
1、展示页面主要引用下拉框空间和复选框控件,包括图片控件用于全选,反选以及置空操作
<tr><td align="right">求职内容:</td><td align="left"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tr> <td><asp:DropDownList ID="ddlJobUser_job_JobContent_Name1_4132" AutoPostBack="True" OnSelectedIndexChanged="ddlJobUser_job_JobContent_Name_4132Select" runat="server"></asp:DropDownList></td> <td align="right">
<asp:ImageButton ID="btnsel1" runat="server" ImageUrl="~/qdAdmin/qdimages/xsel.png" Width="12" Height="12" onclick="btnsel1_Click" title="全选" />
<asp:ImageButton ID="btnnx1" runat="server" ImageUrl="~/qdAdmin/qdimages/xselx.png" Width="12" Height="12" onclick="btnnx1_Click" title="反选" />
<asp:ImageButton ID="btnselnot1" runat="server" ImageUrl="~/qdAdmin/qdimages/xselnot.png" Width="12" Height="12" onclick="btnselnot1_Click" title="全空" /></td> </tr> <tr><td colspan="2" align="left"><asp:CheckBoxList ID="cblJobUser_job_JobContent_Name1_4132" RepeatColumns="2" runat="server" style="word-break: keep-all;white-space:nowrap;"></asp:CheckBoxList></td></tr> </table> </td> </tr>
2、可以后台控制下拉框长度等样式,尽量能封装的就封装,增强代码的可复用性,方便下次使用
//调用基本页面中的 SetDropDownListStyleLineBlack 方法用于控制下拉框长度 base.SetDropDownListStyleLineBlack(ddlJobUser_job_JobContent_Name1_4132, 100); //主要实现 public void SetDropDownListStyleLineBlack(DropDownList ddl, int iWidth) { string slabel = string.Empty; StringBuilder sb = new StringBuilder(); sb.Append("border-bottom-width: 1px;"); sb.Append("border-bottom-style: solid;"); sb.Append("border-bottom-color: #D4D0C8;"); sb.Append("text-align: center;"); //sb.Append("font-size: 12px;"); //sb.Append("font-weight: bold;"); //sb.Append("color: #FF0000;"); sb.Append("border-top-width: 0px;"); sb.Append("border-right-width: 0px;"); sb.Append("border-left-width: 0px;"); sb.Append("border-top-style: none;"); sb.Append("border-right-style: none;"); sb.Append("border-left-style: none;"); if (iWidth > 0) sb.Append("width:" + iWidth + "px;"); ddl.Attributes.Add("style", sb.ToString()); }
3、属性解释以及后台方法:
3.1、下拉框
ID="ddlJobUser_job_JobContent_Name1_4132" 用于给下拉框赋值
在数据库设计的时候要注意这种右级别关系的数据一般使用 code 分级,考虑的多点使用9位为一组,如 000000001 为一级,000000001000000001为二级,其中000000001 是 000000001000000001 的父级,000000001000000001是000000001的第一个儿子。
设计时也可以加了 lever 进行标识第几级,这样查找时更方便点,空间和时间自己把握
//获取数据库中的值 List<ITEM.Model.qdCnt4.FourCollsType> mList11 = _bllTypeColls.Get_Ex_FourCollsTypeListByIDLevel("TypeCollGuid,TypeCollName,TypeCollCode", base.EnterpriseGuid, 4132, 1, 0f); { //赋值 this.ddlJobUser_job_JobContent_Name1_4132.DataTextField = "TypeCollName"; this.ddlJobUser_job_JobContent_Name1_4132.DataValueField = "TypeCollCode"; this.ddlJobUser_job_JobContent_Name1_4132.DataSource = mList11; this.ddlJobUser_job_JobContent_Name1_4132.DataBind(); //默认选中的为空 this.ddlJobUser_job_JobContent_Name1_4132.Items.Insert(0, new ListItem()); //执行选择的事件 ddlJobUser_job_JobContent_Name_4132Select(new object(), new EventArgs()); }
AutoPostBack="True" 和 OnSelectedIndexChanged="ddlJobUser_job_JobContent_Name_4132Select" 用于点击下拉框时同时触发后台中的ddlJobUser_job_JobContent_Name_4132Select 方法
3.2、复选框
ID="cblJobUser_job_JobContent_Name1_4132" 用于给复选框赋值
RepeatColumns="2" 控制复选框展示的内容, 一行展示两个
protected void ddlJobUser_job_JobContent_Name_4132Select(object sender, EventArgs e) { //获取下拉框中选中的值 string Scode = this.ddlJobUser_job_JobContent_Name1_4132.SelectedValue; if (Scode != "") { //根据选中的值查表 List<ITEM.Model.qdCnt4.FourCollsType> mList = _bllTypeColls.Get_Ex_FourCollsTypeList_CodeDown("TypeCollCode,TypeCollName", base.EnterpriseGuid, 4132, Scode, 0f); //给复选框赋值 this.cblJobUser_job_JobContent_Name1_4132.DataTextField = "TypeCollName"; this.cblJobUser_job_JobContent_Name1_4132.DataValueField = "TypeCollCode"; this.cblJobUser_job_JobContent_Name1_4132.DataSource = mList; this.cblJobUser_job_JobContent_Name1_4132.DataBind(); } else { this.cblJobUser_job_JobContent_Name1_4132.Items.Clear(); } }
3.3、图片事件,控制复选框是否选中
ID="btnsel1" // 用于标识该图片事件 ImageUrl="~/qdAdmin/qdimages/xsel.png" // 用于给该图片事件选个图片 Width="12" Height="12" // 用于指定大小 onclick="btnsel1_Click" // 用于点击图片调用 btnsel1_Click方法 title="全选" //由于鼠标放在图片上给个提示
控制全选
protected void btnsel1_Click(object sender, ImageClickEventArgs e) { ImageButton btn = (ImageButton)sender; if (btn.ID == "btnsel1") { for (int i = 0; i <= this.cblJobUser_job_JobContent_Name1_4132.Items.Count - 1; i++) { //将复选框代表的值全都选中 this.cblJobUser_job_JobContent_Name1_4132.Items[i].Selected = true; } } }
控制置空
protected void btnselnot1_Click(object sender, ImageClickEventArgs e) { ImageButton btn = (ImageButton)sender; if (btn.ID == "btnselnot1") { for (int i = 0; i <= this.cblJobUser_job_JobContent_Name1_4132.Items.Count - 1; i++) { //将复选框代表的值全都置空 this.cblJobUser_job_JobContent_Name1_4132.Items[i].Selected = false; } } }
控制反选
protected void btnnx1_Click(object sender, ImageClickEventArgs e) { ImageButton btn = (ImageButton)sender; if (btn.ID == "btnnx1") { for (int i = 0; i <= this.cblJobUser_job_JobContent_Name1_4132.Items.Count - 1; i++) { //将复选框代表的值,选中的变成未选中 this.cblJobUser_job_JobContent_Name1_4132.Items[i].Selected = !this.cblJobUser_job_JobContent_Name1_4132.Items[i].Selected; } } }
二、存储与展示
1、在数据库中使用 code 和 name 进行存储,可以存取多组如下,因此写入数据库和展示时要注意将不同类别之间分开
code 表示层级,如下:000000039 表示下拉框中的 IT,000000039000000003就表示具体的职业Java开发工程师,使用 | 分隔为两组
000000039000000003,000000039000000010|,000000032000000001,000000032000000004
设计时要注意其长度,我这边就省事点了,
2、多组存储
#region 求职内容 { _job_userinfo.JobUser_job_JobContent_4132_Code = "";// mUserInfo.JobUser_job_JobContent_Code_4132 + strGuid;//求职内容,多选,以逗号分隔 _job_userinfo.JobUser_job_JobContent_4132_Name = "";// mUserInfo.JobUser_job_JobContent_Name_4132 + strText;//求职内容,多选,以逗号分隔 if (this.cblJobUser_job_JobContent_Name_4132.SelectedValue != "") { string strGuid = ""; string strText = ""; foreach (ListItem item in cblJobUser_job_JobContent_Name_4132.Items) { if (item.Selected == true) { string sign = strGuid == string.Empty ? "" : ","; strGuid += sign + item.Value; strText += sign + item.Text; } } _job_userinfo.JobUser_job_JobContent_4132_Code = strGuid;//求职内容,多选,以逗号分隔 _job_userinfo.JobUser_job_JobContent_4132_Name = strText;//求职内容,多选,以逗号分隔 } if (this.cblJobUser_job_JobContent_Name2_4132.SelectedValue != "") { string strGuid = ""; string strText = ""; foreach (ListItem item in cblJobUser_job_JobContent_Name2_4132.Items) { if (item.Selected == true) { string sign = strGuid == string.Empty ? "" : ","; strGuid += sign + item.Value; strText += sign + item.Text; } } strGuid = _job_userinfo.JobUser_job_JobContent_4132_Code == string.Empty ? strGuid : "|," + strGuid; strText = _job_userinfo.JobUser_job_JobContent_4132_Code == string.Empty ? strText : "," + strText; _job_userinfo.JobUser_job_JobContent_4132_Code = _job_userinfo.JobUser_job_JobContent_4132_Code + strGuid;//求职内容,多选,以逗号分隔 _job_userinfo.JobUser_job_JobContent_4132_Name = _job_userinfo.JobUser_job_JobContent_4132_Name + strText;//求职内容,多选,以逗号分隔 } if (this.cblJobUser_job_JobContent_Name3_4132.SelectedValue != "") { string strGuid = ""; string strText = ""; foreach (ListItem item in cblJobUser_job_JobContent_Name3_4132.Items) { if (item.Selected == true) { string sign = strGuid == string.Empty ? "" : ","; strGuid += sign + item.Value; strText += sign + item.Text; } } strGuid = _job_userinfo.JobUser_job_JobContent_4132_Code == string.Empty ? strGuid : "|," + strGuid; strText = _job_userinfo.JobUser_job_JobContent_4132_Code == string.Empty ? strText : "," + strText; _job_userinfo.JobUser_job_JobContent_4132_Code = _job_userinfo.JobUser_job_JobContent_4132_Code + strGuid;//求职内容,多选,以逗号分隔 _job_userinfo.JobUser_job_JobContent_4132_Name = _job_userinfo.JobUser_job_JobContent_4132_Name + strText;//求职内容,多选,以逗号分隔 } } #endregion
3、显示
#region 求职内容 if (job_userinfo.JobUser_job_JobContent_4132_Code.Length > 0) { #region 对原始数据处理 string strGuid = job_userinfo.JobUser_job_JobContent_4132_Code;// ,1,2,3,|,1,2,3|,1,2,3,5,| strGuid = "^" + strGuid; strGuid = strGuid.Replace("^,", "").Replace("^", "").Replace(",|", "|").Replace("|,", "|"); strGuid = strGuid + "%"; strGuid = strGuid.Replace("|%", "").Replace("%", ""); string strName = job_userinfo.JobUser_job_JobContent_4132_Name; strName = ("^" + strName).Replace("^,", "").Replace("^", ""); #endregion //this.LabJobUser_job_JobContent_Name_4132Select.Text = strName; strs = strGuid.Split('|'); if (strs.Length > 0) { string[] strs1 = strs[0].Split(','); if (strs1[0].Length >= 9) { List<ITEM.Model.qdCnt4.FourCollsType> modelList = _bllTypeColls.Get_Ex_FourCollsTypeListByIDLevel("*", base.EnterpriseGuid, 4132, 1, " and typecollcode = '" + strs1[0].Substring(0, 9) + "'", 0f); this.ddlJobUser_job_JobContent_Name_4132.SelectedValue = strs1[0].Substring(0, 9).ToLower(); ddlJobUser_job_JobContent_Name_4132Select(new object(), new EventArgs()); for (int i = 0; i < strs1.Length; i++) { foreach (ListItem it in this.cblJobUser_job_JobContent_Name_4132.Items) { if (it.Value == strs1[i] && strs1[i] != "") { it.Selected = true; } } } } } if (strs.Length > 1) { string[] strs1 = strs[1].Split(','); if (strs1[0].Length >= 9) { List<ITEM.Model.qdCnt4.FourCollsType> modelList = _bllTypeColls.Get_Ex_FourCollsTypeListByIDLevel("*", base.EnterpriseGuid, 4132, 1, " and typecollcode = '" + strs1[0].Substring(0, 9) + "'", 0f); this.ddlJobUser_job_JobContent_Name2_4132.SelectedValue = strs1[0].Substring(0, 9).ToLower(); ddlJobUser_job_JobContent_Name2_4132Select(new object(), new EventArgs()); for (int i = 0; i < strs1.Length; i++) { foreach (ListItem it in this.cblJobUser_job_JobContent_Name2_4132.Items) { if (it.Value == strs1[i] && strs1[i] != "") { it.Selected = true; } } } } } if (strs.Length > 2) { string[] strs1 = strs[2].Split(','); if (strs1[0].Length >= 9) { List<ITEM.Model.qdCnt4.FourCollsType> modelList = _bllTypeColls.Get_Ex_FourCollsTypeListByIDLevel("*", base.EnterpriseGuid, 4132, 1, " and typecollcode = '" + strs1[0].Substring(0, 9) + "'", 0f); this.ddlJobUser_job_JobContent_Name3_4132.SelectedValue = strs1[0].Substring(0, 9).ToLower(); ddlJobUser_job_JobContent_Name3_4132Select(new object(), new EventArgs()); for (int i = 0; i < strs1.Length; i++) { foreach (ListItem it in this.cblJobUser_job_JobContent_Name3_4132.Items) { if (it.Value == strs1[i] && strs1[i] != "") { it.Selected = true; } } } } } } #endregion