FineUI 官方论坛

标题: DropDownList 第二次选择某个值,加载问题。 [打印本页]

作者: Vincent    时间: 2012-4-23 09:22
标题: DropDownList 第二次选择某个值,加载问题。
标题不知道咋起直接上图吧![attach]334[/attach]第一次选择感冒药,点击获取规格可以得到,然后删除[attach]335[/attach]再次选择第一次选择的感冒药,点击获取规格[attach]336[/attach]下面加载规格的DDL第一行为空,但是鼠标点击该DDL时[attach]337[/attach]下面是有数据的但第一行数据没有加载到DDL里。然后选择之后就没有问题了。如果删除之后选择其他药品就没有该问题。

作者: Landroid    时间: 2012-4-23 09:47
重新绑定时,先清空原先绑定的数据
dropdownlist1.Items.Clear();
然后再绑定新的数据
作者: Vincent    时间: 2012-4-23 10:20
Landroid 发表于 2012-4-23 09:47
重新绑定时,先清空原先绑定的数据
dropdownlist1.Items.Clear();
然后再绑定新的数据 ...

   已经写了,没效果的。
作者: Landroid    时间: 2012-4-23 10:23
Vincent 发表于 2012-4-23 10:20
已经写了,没效果的。

绑定完以后
DropDownList1.SelectedIndex = 0;
作者: Vincent    时间: 2012-4-23 10:28
Landroid 发表于 2012-4-23 10:23
绑定完以后
DropDownList1.SelectedIndex = 0;

坑爹啊,还是没效果,只要是同种药就没有效果,不同药就是好的
这是源码:
protected void btnSelectPriceList_Click(object sender, EventArgs e)
        {

            ddlPackageSpec.Items.Clear();
            tbxDosageUnits.Text = string.Empty;
            string drugCode = ddlOrderCode.SelectedValue.Trim();
            //药品的库存,规格和厂家
            //List<his.Model.D_STOCK> dStocks = d_stock.GetList(drugCode);
            var lists = d_price_list.GetList();
            int count = lists.Count(dPriceList => dPriceList.DRUG_CODE.Trim() == drugCode);
            if (count == 0)
            {
                showMessage.Text = "药品价表中无数据!";
                // Alert.Show("");
                return;
            }
            his.Model.D_DICT dDict = d_dict.GetModel(drugCode);
         
            List<his.Model.D_PRICE_LIST> list = d_price_list.GetList(drugCode);//获取药品的规格和厂家
            foreach (var priceList in list)
            {
                var item = GetDrugPackageSpec(priceList);
                ddlPackageSpec.Items.Add(item);
            }
            ddlPackageSpec.SelectedIndex = 0;
            string dosageUnits = dDict.UNIT_DOSE;
            tbxDosageUnits.Text = dosageUnits;
            tbxDosageUnits.Enabled = false;
            showMessage.Text = "";

        }

作者: Landroid    时间: 2012-4-23 11:15
Vincent 发表于 2012-4-23 10:28
坑爹啊,还是没效果,只要是同种药就没有效果,不同药就是好的
这是源码:
protected void btnSele ...

你调试看一下
foreach (var priceList in list)
            {
                var item = GetDrugPackageSpec(priceList);
                ddlPackageSpec.Items.Add(item);
            }
里绑定的值的过程
我看不出什么问题
作者: Vincent    时间: 2012-4-23 11:31
Landroid 发表于 2012-4-23 11:15
你调试看一下
foreach (var priceList in list)
            {

我改了个地方,效果是有了但不知道是不是这的问题
ExtAspNet.PageContext.RegisterStartupScript(
                    "var d=Ext.getCmp('" + ddlOrderCode.ClientID + "');" +
                    " d.listWidth=250; " +
                    " d.addListener(\"keyup\",function(f,e){ " +
                    " var arr=['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;}else{document.getElementById(\"" + ddlPackageSpec.ClientID + "\").value='';} }" +
                    " __doPostBack('loaddata',document.getElementById(\"" + ddlOrderCode.ClientID + "\").value);" +
                    "});"
                );
            }本来document.getElementById(\"" + ddlPackageSpec.ClientID + "\").value='';这段是放在return前的,而且arr里还有'8'即backspace键,现在改成如上所示的代码,就有用了,说不明白这是什么问题。




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