ascx自定义控件
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SelectOP.ascx.cs" Inherits="ASB.XPON.Page.LabelAndPackManage.SelectOP" %> <div id="s1" style="float: left;width: 134px;"> <div> <asp:TextBox ID="txtQT" runat="server" Width="86px" Style="display: block; float: left;"> </asp:TextBox> <asp:Button ID="btnSearch" runat="server" Text="查询" Style="float: left; height: 26px; line-height: 26px; width: 36px; padding: 0px;" class="btn mbtn" OnClick="BtnSearch_Click" /> </div> <div> <select id="leftST" multiple="true" style="width: 128px; height: 100px;" runat="server"> </select> </div> </div> <div style="float: left; padding-top: 40px;"> <div style="height: 20px; margin-left: 8px; margin-right: 8px;"> <span>==》</span> </div> <div style="height: 30px; margin-left: 8px; margin-right: 8px;"> <span>《==</span> </div> </div> <div id="s2" style="float: left;"> <div> <select id="leftRT" runat="server" multiple="true" style="width: 128px; height: 126px;"> </select> </div> </div> <script> $(function () { // 给select1的option加双击事件,移除左边的,给右边添加相应的数据 var leftST = '<%= leftST.ClientID %>'; var leftRT = '<%= leftRT.ClientID %>'; $('#' + leftST).dblclick(function () { console.log(111); var selected = $('#' + leftST + ' option:selected'); // document.getElementById(leftST).remove(selected) $('#' + leftRT).append(selected); }); // 右边添加相应事件 $('#' + leftRT).dblclick(function () { var selected = $('#' + leftRT + ' option:selected'); // document.getElementById(leftRT).remove(selected) $('#' + leftST).append(selected); }); }); </script>
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ASB.XPON.Page.LabelAndPackManage { public partial class SelectOP : System.Web.UI.UserControl { public delegate DataTable GetDTDelegate(); public event GetDTDelegate GetDTEvent; protected void Page_Load(object sender, EventArgs e) { } private DataTable _DtLSource; public DataTable DtLSource { get => _DtLSource; set { ddlItemTypeBind(value); _DtLSource = value; } } public DataTable DtRSource { set { ddlItemTypeRBind(value); } } public string ValueBind { get; set; } public string TextBind { get; set; } private void ddlItemTypeBind(DataTable dt) { this.leftST.DataSource = dt; this.leftST.DataTextField = TextBind; this.leftST.DataValueField = ValueBind; this.leftST.DataBind(); } private void ddlItemTypeRBind(DataTable dt) { this.leftRT.DataSource = dt; this.leftRT.DataTextField = TextBind; this.leftRT.DataValueField = ValueBind; this.leftRT.DataBind(); } protected void BtnSearch_Click(object o, EventArgs e) { DataTable dt = GetDTEvent(); if (dt != null && dt.Rows.Count > 0) { DataTable dtN = new DataTable(); dtN.Columns.Add(leftST.DataTextField, typeof(string)); dtN.Columns.Add(leftST.DataValueField, typeof(string)); if (!string.IsNullOrWhiteSpace(txtQT.Text)) { foreach (var dr in dt.Select(leftST.DataTextField + " like '%" + txtQT.Text.Trim() + "%'")) { dtN.Rows.Add(dr[leftST.DataTextField], dr[leftST.DataValueField]); } } else { dtN = dt; } // 排除右边的 IEnumerable<ListItem> dtR = leftRT.Items.OfType<ListItem>(); DataTable dtRS = dtN.Clone(); if (dtR != null && dtR.Count() > 0) { foreach (var item in dtR) { dtN.Rows.Remove(dtN.Rows.Find(item.Value)); dtRS.Rows.Add(item.Text, item.Value); } } dtN.AcceptChanges(); leftST.DataSource = null; TextBind = leftST.DataTextField; ValueBind = leftST.DataValueField; ddlItemTypeBind(dtN); ddlItemTypeRBind(dtRS); } else { leftST.DataSource = null; TextBind = leftST.DataTextField; ValueBind = leftST.DataValueField; } } } }
其他界面使用
<uc1:header ID="SelectOP" runat="server" />
<%@ Register Src="SelectOP.ascx" TagName="header" TagPrefix="uc1" %>