FineUI 官方论坛

标题: 实现autoconplete下拉功能,Enter键选择获取不到值,本人已解决 [打印本页]

作者: Vincent    时间: 2012-4-13 15:06
标题: 实现autoconplete下拉功能,Enter键选择获取不到值,本人已解决
本帖最后由 Vincent 于 2012-4-18 10:15 编辑

if (!IsPostBack)
            {
                ExtAspNet.PageContext.RegisterStartupScript(
                 "var d=Ext.getCmp('" + ddlOrderCode.ClientID + "');" +
                    " d.listWidth=150; " +
                    " d.addListener(\"keyup\",function(f,e){ " +
                    " var arr=['8','16','17','37','38','39','40','13']; " +
                    " var x=e.keyCode; " +
                    " for(var n=0 ;n<arr.length;n++) {if (parseInt(arr[n])==parseInt(x)) {return;} }" +
                    " __doPostBack('loaddata',document.getElementById(\"" + ddlOrderCode.ClientID + "\").value);" +
                    "});"
                );
            }
            else
            {
                if (Request["__EVENTTARGET"] == "loaddata")
                {
                    string input = Request["__EVENTARGUMENT"];
                    ddlOrderCode.Items.Clear();
                    List<his.Model.D_DICT> list = d_dict.GetList(input);

                    foreach (his.Model.D_DICT m in list)
                    {
                        ddlOrderCode.Items.Add(new ExtAspNet.ListItem(m.DRUG_NAME.Trim()+"_"+m.DRUG_CODE.Trim(), m.DRUG_CODE.Trim()));
                    }

                    string strTimeMark = DateTime.Now.Ticks.ToString();
                    ddlOrderCode.Items.Add(new ExtAspNet.ListItem("请输入拼音码或文字进行查找选择", strTimeMark));
                    ddlOrderCode.SelectedValue = strTimeMark;
                    ddlOrderCode.SelectedItem.EnableSelect = false;

                    ExtAspNet.PageContext.RegisterStartupScript("document.getElementById(\"" + ddlOrderCode.ClientID + "\").value=newInput;");
                }
            }
        }
protected override void Render(HtmlTextWriter writer)
        {

            StringWriter strWriter = new StringWriter();
            base.Render(new HtmlTextWriter(strWriter));
            writer.Write(
                strWriter.ToString().Replace("id:\"" + ddlOrderCode.ClientID + "\",", "id:\"" + ddlOrderCode.ClientID + "\",editable: true,hideTrigger:true,")
                );
        }

[attach]266[/attach]如图前台实现的效果,如果我用Enter键选择的话,ddl里[attach]267[/attach]是有值的,但是点击获取规格没有效果,因为ddl的selectValue根本就没有值,想请教一下,如何才能让enter有用!!!!!









红色部分是改动部分!!!我想这样的功能会很有用的!所以来分享一下!,还有个问题想请教一下大家,就是下拉框中下拉出来的是药名和药品的代码,我想问一下选择之后只让药品在文本框中显示不知有人会做否?或者给个提示也行!!!

作者: Vincent    时间: 2012-4-14 09:35
放在上一天了,怎么没人来解答????
作者: Vincent    时间: 2012-4-15 14:06
还是没人嘛?再定一下!!!
作者: shanzhongfei    时间: 2012-4-15 15:33
???不太明白你获取规格是什么意思?
作者: Vincent    时间: 2012-4-16 10:25
shanzhongfei 发表于 2012-4-15 15:33
???不太明白你获取规格是什么意思?

每种药品都有规格的,根据药品代码到数据库里查找其规格,这里的药品代码是在用户选择药品之后控件自动获得的,即后台这里的代码ddlOrderCode.Items.Add(new ExtAspNet.ListItem(m.DRUG_NAME.Trim()+"_"+m.DRUG_CODE.Trim(), m.DRUG_CODE.Trim()));
作者: Vincent    时间: 2012-4-18 09:12
希望有高手过来帮忙看一下。。。。




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4