zoukankan      html  css  js  c++  java
  • DropDownList与TextBox互动

    昨晚有位网友来电求助,说有一个DropDownList,由于选项过多,想在DropDownList前放一个TextBox,让用户输入文本,DropDownList会选中相应的选项。

    如果用户选择DropDownList选择一个选择,会把它的值显示于这个TextBox之上。

    Insus.NET做了两个演示。也供大家参考,Demo1,普通方法实现,执行时会有点异常,还待去解决:

    Demo1.aspx:

    View Code
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo1.aspx.cs" Inherits="Demo1" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
            <hr />
            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                <asp:ListItem Text="AAA" Value="aaa"></asp:ListItem>
                <asp:ListItem Text="BBB" Value="bbb"></asp:ListItem>
                <asp:ListItem Text="CCC" Value="ccc"></asp:ListItem>
            </asp:DropDownList>
        </form>
    </body>
    </html>

    Demo1.aspx.cs:

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class Demo1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.TextBox1.Text)) return;
            this.DropDownList1.ClearSelection();
            this.DropDownList1.Items.FindByText(this.TextBox1.Text).Selected = true;
        }
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.DropDownList1.SelectedIndex == -1return;
            this.TextBox1.Text = this.DropDownList1.SelectedItem.Text;
        }
    }

     Demo2,Insus.NET使用了适配器(Adapter)来将DropDownList重写TextBox的Text属性。

    适配器DropDownListAdapter的类:

    DropDownListAdapter
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI.WebControls;

    /// <summary>
    /// Summary description for DropDownListAdapter
    /// </summary>
    namespace Insus.NET
    {
        public class DropDownListAdapter : TextBox
        {
            DropDownList _DropDownList;

            public DropDownListAdapter(DropDownList dropDownList)
            {
                this._DropDownList = dropDownList;
            }

            public override string Text
            {
                get
                {
                    return _DropDownList.SelectedItem.Text;
                }
                set
                {
                    this._DropDownList.ClearSelection();
                    foreach (ListItem li in this._DropDownList.Items)
                    {
                        if (li.Text == value)
                            this._DropDownList.Items.FindByText(value).Selected = true;
                        continue;
                    }
                }
            }
        }
    }

    Demo2.aspx:

    View Code
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo2.aspx.cs" Inherits="Demo2" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>        
            <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
            <hr />
            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                <asp:ListItem Text="AAA" Value="aaa"></asp:ListItem>
                <asp:ListItem Text="BBB" Value="bbb"></asp:ListItem>
                <asp:ListItem Text="CCC" Value="ccc"></asp:ListItem>
            </asp:DropDownList>
        </div>
        </form>
    </body>
    </html>

    Demo2.aspx.cs:

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Insus.NET;

    public partial class Demo2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            DropDownListAdapter obj = new DropDownListAdapter(this.DropDownList1);
            obj.Text = this.TextBox1.Text;
        }

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownListAdapter obj = new DropDownListAdapter(this.DropDownList1);
            this.TextBox1.Text = obj.Text;
        }
    }
  • 相关阅读:
    C# 设置textedit只能输入英文数字下划线,并且只能以英文开头(正则表达式)
    C#的Winform中OpenFileDialog对话框Filter属性设置包含特定字符,使用正则表达式
    C# 命名空间
    C# try catch finally
    easyui复选框树动态加载后台数据,实现自动选中数据库中数据。后台语言是.NET
    ASP.NET MVC Bundles 用法和说明(打包javascript和css)
    easyUI日期框返回到月份,选择日期也只到月份
    根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第9版)
    根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第8版)
    根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第7版)
  • 原文地址:https://www.cnblogs.com/insus/p/2245423.html
Copyright © 2011-2022 走看看