如何在用户控件里联动Dropdownlist

 

这几天做项目过程中,发现要在用户控件里做一个无刷新的Dropdownlist联动效果时遇到了些问题,现在终于将问题解决了,因此写出来与大家分享一下,呵呵,也许这里的高手们都已知道这问题是如何解决的了,不过为了让自己也留下些印象,还是决定在此献丑了!

要实现无刷新效果,相信大家都会马上想到AJAX,不错,我现在就是用AJAXPRO来完成的,其实我之前一直解决不了的一个问题就是在用户控件里调用JavaScript获取页面的控件ID,大家都知道如果是在一般的ASPX页面,要获取控件只需要使用

Document.getElementById(ControlID);

就可以获取所需的控件了,不过如果是使用用户控件,然后在另一个页面调用此用户控件,那么直接使用上面的方法就获取不了用户控件页面里的子控件了,我想这应该是由于用户控件被另一页面调用,而其实并不属于那个页面的,所以每次用此方法获取时,都会提示“缺少对象”的错误。

要在用户控件页面里要获取其里面的控件,可以用以下的方法:

var id = '<%=this. ControlID.ClientID%>';

var Object=document.getElementById(id);

通过上面2句,就可以获取实际用户控件页面里的子控件了!

以下是我的部分实现代码,主要是完成了省份与城市的联动:(关于数据绑定的代码我就不写出来了,在此只写出相关性的代码)

CS文件:

1、先注册一个AJAXPro组件,然后绑定DropDownList控件的数据,其加上JS的事件

 1None.gifprivate void Page_Load(object sender, System.EventArgs e)
 2ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
 3InBlock.gif            AjaxPro.Utility.RegisterTypeForAjax(typeof(Top_test1));
 4InBlock.gif            // 在此处放置用户代码以初始化页面
 5InBlock.gif            if(!IsPostBack)
 6ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 7InBlock.gif                BindToPro();
 8InBlock.gif                BindToCity();
 9InBlock.gif                this.ddlProSt_hy.Attributes.Add("onchange","cityResult();");
10ExpandedSubBlockEnd.gif            }

11ExpandedBlockEnd.gif        }

12None.gif

 

 

2、发布AJAX服务器端的方法:

1ContractedBlock.gifExpandedBlockStart.gifGetCityList#region GetCityList
2InBlock.gif        [AjaxPro.AjaxMethod]
3InBlock.gif        public  DataSet GetCityList(int povinceid)
4ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
5InBlock.gif            string sql="select CityID,CityName from cities where provinceid="+povinceid;
6InBlock.gif            return GetData(sql);            
7ExpandedSubBlockEnd.gif        }

8ExpandedBlockEnd.gif        #endregion


ASCX用户控件文件:
3、加入以下JavaScript代码

 1None.gif<SCRIPT language="javascript">            
 2None.gif            //根据省份ID获取城市列表
 3None.gif            function cityResult() 
 4ExpandedBlockStart.gifContractedBlock.gif            dot.gif
 5InBlock.gif               var id = '<%=this.ddlProSt_hy.ClientID%>';//获取所需的控件ID
 6InBlock.gif               var Pro=document.getElementById(id);    //根据获取的ID得到控件对象                           
 7InBlock.gif               HCWLWebSystem.WebUI.Top_test1.GetCityList(Pro.selectedIndex,get_city_Result_CallBack);//通过AjaxPro调用后台服务器方法
 8ExpandedBlockEnd.gif            }

 9None.gif            //获取后台回调数据的方法
10None.gif            function get_city_Result_CallBack(response)
11ExpandedBlockStart.gifContractedBlock.gif            dot.gif{
12InBlock.gif                if (response.value != null)
13ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
14InBlock.gif                    var id = '<%=this.ddlCitySt_hy.ClientID%>';//获取要关联的控件ID
15InBlock.gif                     var city=document.getElementById(id);    //根据ID获取要关联的控件对象
16InBlock.gif                    city.length=0;                
17InBlock.gif                var ds = response.value;
18InBlock.gif                //根据后台返回的DataSet动态地添加DropDownList的项
19InBlock.gif                    if(ds != null && typeof(ds) == "object" && ds.Tables != null)
20ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{                    
21InBlock.gif                        for(var i=0; i<ds.Tables[0].Rows.length; i++)
22ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
23InBlock.gif                        var name=ds.Tables[0].Rows[i].CityName;
24InBlock.gif                      var id=ds.Tables[0].Rows[i].cityID;
25InBlock.gif                      city.options.add(new Option(name,id));//为控件添加项
26ExpandedSubBlockEnd.gif                    }

27ExpandedSubBlockEnd.gif                    }

28ExpandedSubBlockEnd.gif                }
                
29InBlock.gif                return
30ExpandedBlockEnd.gif            }

31None.gif</SCRIPT>

4、然后在Body里的代码:

1None.gif<body MS_POSITIONING="GridLayout">
2None.gif        <form id="Form1" method="post" runat="server">
3None.gif            <FONT face="宋体">
4None.gif                <asp:DropDownList id="ddlProSt_hy" style="Z-INDEX: 101; LEFT: 400px; POSITION: absolute; TOP: 208px"
5None.gif                    runat="server"></asp:DropDownList>
6None.gif                <asp:DropDownList id="ddlCitySt_hy" style="Z-INDEX: 102; LEFT: 552px; POSITION: absolute; TOP: 208px"
7None.gif                    runat="server"></asp:DropDownList></FONT>
8None.gif        </form>
9None.gif    </body>

  呵呵,大概就是这么多啦,由于本人技术有限,而且也是第一次发这类文章,如有错误的地方,望大家多多指教哦:)

转载于:https://www.cnblogs.com/winsonet/archive/2006/10/19/534187.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值