DropDownList与TextBox互动

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

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

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

 

Demo1.aspx:

ExpandedBlockStart.gif 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:

ExpandedBlockStart.gif 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的类:

ExpandedBlockStart.gif 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:

ExpandedBlockStart.gif 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:

ExpandedBlockStart.gif 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;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值