aspx Web 用户控件 多选下拉框

简介: 直接上代码

html部分:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MultiSelectDropDown.ascx.cs" Inherits="UserControl_MultiSelectDropDown" %>

 

<asp:TextBox ID="txtSelection" runat="server" placeholder="请选择"></asp:TextBox>

<asp:Panel ID="Panel1" runat="server">

   <asp:Panel ID="Panel2" runat="server">

       <asp:CheckBoxList ID="cbSelections" runat="server">

       </asp:CheckBoxList>

 

   </asp:Panel>

   <div style="display: flex; padding: 2px;">

       <div>清空</div>

       <div>确定</div>

   </div>

</asp:Panel>

 

 

 

 

<script type="text/javascript">

   function showSelectionBox() {

       var panel = document.getElementById('<%= Panel1.ClientID %>');

       panel.style.display = 'block';

       panel.style.position = 'absolute';

       panel.style.backgroundColor = '#fff';

       panel.style.padding = "10px";

       panel.style.textAlign = "left";

 

       var panel2 = document.getElementById('<%= Panel2.ClientID %>');

       panel2.style.height = "200px";

       panel2.style.overflowY = "scroll";

 

 

       var txtSelection = document.getElementById('<%= txtSelection.ClientID %>');

       //panel.style.top = txtSelection.getBoundingClientRect().top + txtSelection.style.offsetHeight + 'px';

       panel.style.marginTop = txtSelection.getBoundingClientRect().height + 'px';

       panel.style.left = txtSelection.getBoundingClientRect().left + 'px';

 

 

 

   }

 

   function selectItem() {

 

       var varray = GetCheckBoxListValue('<%= cbSelections.ClientID %>');

       if (varray.length > 0) {

           var txtSelection = document.getElementById('<%= txtSelection.ClientID %>');

           txtSelection.value = varray.join(',');

 

       }

       initCbSelections();

 

   }

   function reset() {

       ResetCheckBoxListValue('<%= cbSelections.ClientID %>');

       var txtSelection = document.getElementById('<%= txtSelection.ClientID %>');

       txtSelection.value = '';

       initCbSelections();

   }

   function initCbSelections() {

       var panel = document.getElementById('<%= Panel1.ClientID %>');

       panel.style.display = 'none';

   }

   function ResetCheckBoxListValue(objID) {

       var CheckBoxList = document.getElementById(objID);

       if (CheckBoxList == null) return;

       if (CheckBoxList.tagName == "TABLE") {

           for (i = 0; i < CheckBoxList.rows.length; i++)

               for (j = 0; j < CheckBoxList.rows[i].cells.length; j++)

                   if (CheckBoxList.rows[i].cells[j].childNodes[0])

                       if (CheckBoxList.rows[i].cells[j].childNodes[0].checked == true)

                           CheckBoxList.rows[i].cells[j].childNodes[0].checked = false;

       }

       if (CheckBoxList.tagName == "SPAN") {

           for (i = 0; i < CheckBoxList.childNodes.length; i++)

               if (CheckBoxList.childNodes[i].tagName == "INPUT")

                   if (CheckBoxList.childNodes[i].checked == true) {

                       CheckBoxList.childNodes[i].checked = false;

                   }

       }

   }

   function GetCheckBoxListValue(objID) {

       var v = new Array();

       var CheckBoxList = document.getElementById(objID);

       if (CheckBoxList == null) return v;

       if (CheckBoxList.tagName == "TABLE") {

           for (i = 0; i < CheckBoxList.rows.length; i++)

               for (j = 0; j < CheckBoxList.rows[i].cells.length; j++)

                   if (CheckBoxList.rows[i].cells[j].childNodes[0])

                       if (CheckBoxList.rows[i].cells[j].childNodes[0].checked == true)

                           v.push(CheckBoxList.rows[i].cells[j].childNodes[1].innerText);

       }

       if (CheckBoxList.tagName == "SPAN") {

           for (i = 0; i < CheckBoxList.childNodes.length; i++)

               if (CheckBoxList.childNodes[i].tagName == "INPUT")

                   if (CheckBoxList.childNodes[i].checked == true) {

                       i++;

                       v.push(CheckBoxList.childNodes[i].innerText);

                   }

       }

       return v;

   }

 

   initCbSelections();

</script>


c#部分:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

public partial class UserControl_MultiSelectDropDown : System.Web.UI.UserControl

{

 

 

   public string CssClass

   {

       get { return txtSelection.CssClass; }

       set { txtSelection.CssClass = value; }

   }

 

   public ListItemCollection Items

   {

       get

       {

 

           return cbSelections.Items;

       }

       set

       {

           var data = value as ListItemCollection;

           cbSelections.DataSource = data;

           cbSelections.DataBind();

       }

 

   }

   public List<string> SelectedTexts

   {

       get { return txtSelection.Text.Split(',').ToList(); }

   }

 

   protected void Page_Load(object sender, EventArgs e)

   {

 

   }

 

}


使用方法:

<%@ Register TagPrefix="uc" TagName="MultiSelectDropDown" Src="~/UserControl/MultiSelectDropDown.ascx" %>

<uc:MultiSelectDropDown ID="multiSelectDropDown" runat="server" CssClass="Public_Input IE_textcentered"></uc:MultiSelectDropDown>

 

this.multiSelectDropDown.Items.Add(new ListItem(item.Value, item.Key));

 

multiSelectDropDown.SelectedTexts

目录
相关文章
|
4月前
|
开发者 Java Spring
JSF 牵手社交登录,如魔法风暴席卷 Web 世界,开启震撼便捷登录之旅!
【8月更文挑战第31天】在互联网时代,便捷登录成为用户的核心需求。社交登录凭借其便捷性、安全性和社交化的特点,在各类Web应用中广泛应用。JavaServer Faces(JSF),作为一款流行的Java Web框架,能够轻松集成社交登录功能,显著提升用户体验。本文详细介绍社交登录的优势,并提供两种JSF集成社交登录的常见方法:一是利用Spring Social等第三方库简化开发;二是自行实现社交登录流程。开发者可根据项目需求选择适合的方案。
51 0
|
4月前
|
开发者 C# UED
如何轻松将WinUI控件引入Web应用?Uno Platform实战攻略——从环境搭建到性能优化,一探究竟!
【8月更文挑战第31天】Uno Platform 通过支持 WebAssembly,将 WinUI 控件无缝带入 Web,为多平台开发提供了新途径。本文介绍如何在 Web 中使用 WinUI 控件,包括环境搭建、控件使用、性能优化、样式调整及测试调优,助力开发者打造高质量跨平台应用。
72 0
|
4月前
|
数据采集 前端开发 开发者
Angular表单控件详解:掌握模板驱动与响应式表单的精髓,让Web应用中的数据采集工作变得高效又简单,彻底告别繁琐的表单处理流程
【8月更文挑战第31天】表单是 Web 应用的关键组件,用于用户登录、注册及信息提交。Angular 作为成熟前端框架,提供了强大的表单处理功能,包括模板驱动与响应式表单。本文通过技术博客形式,详细介绍这两种表单控件,并提供示例代码,展示如何利用它们简化表单处理流程,提高开发效率。首先介绍简单的模板驱动表单,然后讲解基于 RxJS 的响应式表单,适用于复杂逻辑。通过本文,你将学会如何高效地使用 Angular 表单控件,提升应用的用户体验。
50 0
|
7月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
7月前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
7月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
7月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类
|
7月前
|
人工智能 前端开发 Java
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
|
7月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
88 0
|
搜索推荐 JavaScript 数据可视化
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
537 0