表:ProductsNum------sNum-------ProductName
001      s001       名称1
002      s002       名称2
........想实现如图所示的功能(图做的不太好,呵呵)2个输入框都能实现自动提示功能选择后“名称”中显示读取选中值请高手指点哦~~[用ajax吗~],主要问题就是2个输入框如何实现

解决方案 »

  1.   

    百度或google 關鍵字:AutoComplete
      

  2.   

    肯定要用到ajax,参考1、asp.net ajax控件工具集 AutoCompleteExtender控件
    2、query.autocomplete仿google提示
      

  3.   

    AutoComplete 这个我找到了,但是只能实现1个输入框的提示,2个输入框的提示我就不会了,呵呵
      

  4.   

    放个datagridview.放俩个label列
    动态加载数据,然后动态调整Top。其实就是当前有录入焦点的那个TextBox的Top
      

  5.   

    asp.net ajaxtoolkit控件可以实现,很方便的
      

  6.   


    那就用两个AutoCompleteExtender呗
      

  7.   

    ajax,红色部分用div来显示服务器传回来的数据就可以。
      

  8.   

    asp.net ajax toolkit的例子:
    http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AutoComplete/AutoComplete.aspx
      

  9.   

    用ajax toolkit中的AutoCompleteExtender,其它的有什么方法,期待...
      

  10.   

    楼主参考下,用javascript实现:<script language="javascript"> 
    var intIndex=0;arrList = new Array(); 
    arrList[intIndex++] = " 1sdfsdf.com"; 
    arrList[intIndex++] = " a11sdafs.net"; 
    arrList[intIndex++] = " b22dsafsdf"; 
    arrList[intIndex++] = " c333asdfsadf"; 
    arrList[intIndex++] = " 4444dsafasdf"; 
    arrList[intIndex++] = " dddsfddsafdsaf"; 
    arrList[intIndex++] = " 121213dsafsdaf"; 
    arrList[intIndex++] = " 43213asdfadsf"; 
    arrList[intIndex++] = " dsa3121dasf3"; 
    arrList[intIndex++] = " a213"; 
    arrList[intIndex++] = " 323313"; 
    arrList[intIndex++] = " 3213"; 
    arrList[intIndex++] = " 32213"; 
    arrList[intIndex++] = " dsfsdddd"; 
    arrList[intIndex++] = " ds11dfsfd"; 
    arrList[intIndex++] = " ffdafd"; 
    arrList[intIndex++] = " afdfd"; 
    arrList[intIndex++] = " afd"; 
    arrList[intIndex++] = " baffad"; 
    arrList[intIndex++] = " 2fda2fd"; 
    arrList[intIndex++] = " dasd"; function smanPromptList(arrList,objInputId){ 
    this.style = "background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;" 
    if (arrList.constructor!=Array){alert('smanPromptList初始化失败:第一个参数非数组!');return ;} 
    window.onload =function() { 
                  arrList.sort(function(a,b){ 
                      if(a.length>b.length)return 1; 
                    else if(a.length==b.length)return a.localeCompare(b); 
                    else return -1; 
                }) 
    var objouter=document.getElementById("__smanDisp") //显示的DIV对象 
    var objInput = document.getElementById(objInputId); //文本框对象 
    var selectedIndex=-1; 
    var intTmp; //循环用的:) 
    if (objInput==null) {alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;} 
    //文本框失去焦点 
    objInput.onblur=function(){ 
    objouter.style.display='none'; 

    //文本框按键抬起 
    objInput.onkeyup=checkKeyCode; 
    //文本框得到焦点 
    objInput.onfocus=checkAndShow; 
    function checkKeyCode(){ 
    var ie = (document.all)? true:false 
    if (ie){ 
    var keyCode=event.keyCode 
    if (keyCode==40||keyCode==38){ //下上 
      var isUp=false 
      if(keyCode==40) isUp=true ; 
      chageSelection(isUp) 
    }else if (keyCode==13){//回车 
      outSelection(selectedIndex); 
    }else{ 
      checkAndShow() 

    }else{ 
    checkAndShow() 

    divPosition() 
    } function checkAndShow(){ 
      var strInput = objInput.value 
      if (strInput!=""){ 
      divPosition(); 
      selectedIndex=-1; 
      objouter.innerHTML =""; 
      for (intTmp=0;intTmp<arrList.length;intTmp++){ 
      for(i=0;i<arrList[intTmp].length;i++){  
    if (arrList[intTmp].substr(i, strInput.length).toUpperCase()==strInput.toUpperCase()){ 
        addOption(arrList[intTmp],strInput); 
      } 

      } 
      objouter.style.display=''; 
      }else{ 
      objouter.style.display='none'; 

    function addOption(value,keyw){ 
    var v=value.replace(keyw,"<b><font color=red>"+keyw+"</font></b>"); 
      objouter.innerHTML +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputId+"').value='" + value + "'\">" + v + "</div>"  


    function chageSelection(isUp){ 
    if (objouter.style.display=='none'){ 
    objouter.style.display=''; 
    }else{ 
    if (isUp) 
      selectedIndex++ 
    else 
      selectedIndex-- 

    var maxIndex = objouter.children.length-1; 
    if (selectedIndex<0){selectedIndex=0} 
    if (selectedIndex>maxIndex) {selectedIndex=maxIndex} 
    for (intTmp=0;intTmp<=maxIndex;intTmp++){ if (intTmp==selectedIndex){ 
      objouter.children[intTmp].className="sman_selectedStyle"; 
    }else{ 
      objouter.children[intTmp].className=""; 



    function outSelection(Index){ 
    objInput.value = objouter.children[Index].innerText; 
    objouter.style.display='none'; 

    function divPosition(){ 
    objouter.style.top =getAbsoluteHeight(objInput)+getAbsoluteTop(objInput); 
    objouter.style.left =getAbsoluteLeft(objInput);  
    objouter.style.width=getAbsoluteWidth(objInput) 


    document.write("<div id='__smanDisp' style='position:absolute;display:none;" + this.style + "' onbulr> </div>"); 
    document.write("<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}</style>"); 
    function getAbsoluteHeight(ob){ 
    return ob.offsetHeight 

    function getAbsoluteWidth(ob){ 
    return ob.offsetWidth 

    function getAbsoluteLeft(ob){ 
    var s_el=0;el=ob;while(el){s_el=s_el+el.offsetLeft;el=el.offsetParent;}; return s_el 

    function getAbsoluteTop(ob){ 
    var s_el=0;el=ob;while(el){s_el=s_el+el.offsetTop ;el=el.offsetParent;}; return s_el 


    smanPromptList(arrList,"inputer") 
    </script> 
    <table><tr><td> 
    <input type="text" id="inputer"></td></tr></table>  
      

  11.   

    ajax toolkit
    实现你的要求没问题
      

  12.   

    ajax啊 很简单 
    1 asp.net ajax扩展控件
    2 jquery 
    3 javascript
      

  13.   

    使用ajax控件吧
    个人意见在textbox的获取焦点事件里面做数据绑定+css样式调用来实现
      

  14.   

    AJAX ,自己动手写的话也可以实现,要是用AjaxControlToolkit中的控件AutoComplete来实现,要实现两个文本框就用两个AutoComplete来分别对应具体的两个TextBox
      

  15.   

    ajax的ajaxTollkit或者Jquery都可以实现
      

  16.   

    ajax获取数据,js画自动提示,推荐jquery
      

  17.   

    参考
    仿google联想输入,网上有介绍,可以用asp.net2.0可以通过客户回调来实现,VS2008就直接用AJAX工具吧
      

  18.   

    http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AutoComplete/AutoComplete.aspx然后在后台写个webserveice,就可以了
      

  19.   

    AJAX从后台或取数据
    前台js在文本框下面创建一个div
    把数据填充进div
    在做一些模拟按键 上下左右回车 键
    对应上一些css样式 如当前选中行背景成暗色
    一些思路
    其实思路有了,至于用什么去实现都无所谓了
    可以用现成js控件,也可以自己试着写下
      

  20.   

    用ajax应该很简单的
    具体实现方法期待中。
      

  21.   

    vs2008里面自带ajax,实现起很简单的
      

  22.   

    两个 AutoComplete 
    两个 Webservice 
      就行了
      

  23.   

    ajax很容易实现。我这有例子!要的话给我留言或给我发信。[email protected]
      

  24.   

    用Ajax吧。AutoComplete 不是很好
      

  25.   

    实现类似google的搜索提示:
    http://www.cnblogs.com/Ferry/archive/2008/12/24/1361505.html
      

  26.   

    使用ajax里的AutoCompleteExtender控件,这个还有用到WEB Server
      

  27.   

    2个输入框,做出一个另一个也一定可以做的,在同一个页面不能用两个ScriptManager(全局脚本控制器),一个就可以了~