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" %>

 

posted @ 2021-10-09 18:07  vba是最好的语言  阅读(84)  评论(0编辑  收藏  举报