java 用户控件_用户控件(areacontrol)

1 Ajax.dll 的应用

2 ajax 函数的实现(1  无法调用服务器控件,如给服务器控件赋值  获取服务器状态等   若需以上操作  通过ajax函数的参数来传值到后台  2  要有返回值  由回调函数来处理  )。

3 回调函数 :处理后台返回的值 ,对ajax函数执行的结果进行处理等。

4 用户控件中的服务器控件   后台给定的id在前台无法使用  (设置clienetidmode等方式   或者 )

5  xml 字符串构造

6  javascript 加载ajax函数返回的结果(xml 字符串) 。

var str = "";

function SetAreaId(ClassID) {

var hiddenID = document.getElementById("HiddenId");

hiddenID.value = ClassID;

var HiddenText = document.getElementById("HiddenText");

var drp1 = document.getElementById("DropDownList1");

var drp2 = document.getElementById("DropDownList2");

var drp3 = document.getElementById("DropDownList3");

if (drp1.selectedIndex > -1) {

HiddenText.value = drp1.options[drp1.selectedIndex].text;

if (drp2 != null && drp2.selectedIndex > -1) {

HiddenText.value += "-" + drp2.options[drp2.selectedIndex].text;

if (drp3 != null && drp3.selectedIndex > -1) {

HiddenText.value += "-" + drp3.options[drp3.selectedIndex].text;

}

}

}

}

function loadsecond(ClassID) {

//ClassID为接收传递的大类编号

var drp2 = document.getElementById("DropDownList2");

SetAreaId(ClassID);

if (drp2 != null) {

var drp3 = document.getElementById("DropDownList3");

RemoveAll(drp2);

if (drp3 != null)

RemoveAll(drp3);

str = areaControl.bindsecond(ClassID, callbackcomplete);

}

}

function callbackcomplete(res) {

var oDoc = new ActiveXObject("MSXML2.DOMDocument");

oDoc.loadXML(res.value);

items1 = oDoc.selectNodes("/ClassLists/List/name");

items2 = oDoc.selectNodes("/ClassLists/List/id");

var itemsLength = items1.length;

var drp2 = document.getElementById("DropDownList2");

for (i = 0; i < itemsLength; i++) {

var newOption = document.createElement("OPTION");

newOption.text = items1[i].text;

newOption.title = items1[i].text;

newOption.value = items2[i].text;

drp2.options.add(newOption);

}

}

function RemoveAll(oElem) {

//清除DropDownList2的所有项

var i = 0;

if (oElem != null)

for (i = oElem.length; i >= 0; i--) {

oElem.options.remove(i);

}     }

function loadthird(ClassID) {

//ClassID为接收传递的大类编号

var drp3 = document.getElementById("DropDownList3");

SetAreaId(ClassID);

if (drp3 != null) {

RemoveAll(drp3);

str = areaControl.Bindthird(ClassID, callbackthirdcomplete);

}     }

function callbackthirdcomplete(res) {

var oDoc = new ActiveXObject("MSXML2.DOMDocument");

oDoc.loadXML(res.value);

items1 = oDoc.selectNodes("/ClassLists/List/name");

items2 = oDoc.selectNodes("/ClassLists/List/id");         var itemsLength = items1.length;

var drp3 = document.getElementById("DropDownList3");

for (i = 0; i < itemsLength; i++) {

var newOption = document.createElement("OPTION");

newOption.text = items1[i].text;

newOption.title = items1[i].text;

newOption.value = items2[i].text;

drp3.options.add(newOption);

}

}

  • 省       

  • 市                    

  •        

    县                    

          
          

后台代码:

namespace CControl.userControl {     ///     /// 显示地区列表数量,最多三级,add by clare     ///

public partial class areaControl : System.Web.UI.UserControl     {       ///

/// 显示的地区层数 最多3层,默认3层

///

public int Floor         {

get

{

if (ViewState["_floor"] == null)

return 3;

else

return (int)ViewState["_floor"]; ;

}

set {

if(value>0 && value<4)

ViewState["_floor"] = value;

else

ViewState["_floor"] = 3;

}         }

///         /// 二级是否添加"全部"选择条,默认是         ///

public bool SecondNeedZero

{

get

{

if (ViewState["_SecondZeroItem"] == null)

return true;

else

return (bool)ViewState["_SecondZeroItem"];

}

set { ViewState["_SecondZeroItem"] = value; }

}

///         /// 三级是否添加全部选择,默认是         ///

public bool ThirdNeedZero         {

get             {

if (ViewState["_thirdNeedZero"] == null)

return true;

else

return (bool)ViewState["_thirdNeedZero"];

}

set { ViewState["_thirdNeedZero"] = value; }         }

///         /// 首级地区从电信端列表里读取,默认false;         ///

public bool FirstFromTelecom         {

get {

if (ViewState["_firstFromTelecom"] == null)

return false;

else

return (bool)ViewState["_firstFromTelecom"];

}

set { ViewState["_firstFromTelecom"] = value; }

}

public int GetAreasID         {

get {

if (string.IsNullOrEmpty(this.HiddenId.Value))

return 0;

return int.Parse(this.HiddenId.Value);             }

}

///         /// 返回地区名,多级累加的         ///

public string AreasName

{

get { return this.HiddenText.Value; }

}         //private  bool _secondFromHotel = false;

/         / 二级菜单是否从酒店列表里读取,若是,则FirstFromTelecom必须为true         /         //public bool SecondFromHotel         //{         //    get { return _secondFromHotel; }         //    set { _secondFromHotel = value; }         //}

protected void Page_Load(object sender, EventArgs e)

{

Ajax.Utility.RegisterTypeForAjax(typeof(areaControl));

if (!IsPostBack)

{

switch (Floor)

{

case 1:                         City.Visible = false;

//DropDownList2.Attributes.Add("display", "none");

//DropDownList3.Attributes.Add("display", "none");

Town.Visible = false;

break;

case 2:

Town.Visible = false;

//DropDownList3.Attributes.Add("display", "none");

break;

default :

break;

}

}

bindFirst();

}

protected void bindFirst()

{

DropDownList1.Items.Clear();

if (FirstFromTelecom)

{

PubInfo.BLL.SRC_T_Telcom bll = new PubInfo.BLL.SRC_T_Telcom();

DataSet ds = bll.GetTelcomList();

foreach (DataRow item in ds.Tables[0].Rows)

{

//DropDownList1.DataSource = ds;

//DropDownList1.DataTextField = "Name";

//DropDownList1.DataValueField = "areaId";

//DropDownList1.SelectedIndex = -1;

try                     {

DropDownList1.Items.Add(new ListItem(item["Name"].ToString(), item["areaId"].ToString()));

}                     catch { }

}

}

else

{

PubInfo.BLL.Area bll = new PubInfo.BLL.Area();

int total=0;                 ///这个函数.GetProvince有问题,需要修改

List models= bll.GetProvinceAreas(0,0,out total);

foreach (PubInfo.Model.Area item in models)

{

DropDownList1.Items.Add(new ListItem(item.AreaName,item.ID.ToString()));

}

}

foreach (ListItem item in DropDownList1.Items)

{

item.Attributes["title"] = item.Text;

}

DropDownList1.Items.Insert(0,new ListItem("请选择...", "-1"));

DropDownList1.SelectedIndex = -1;

}

[Ajax.AjaxMethod]

public string bindsecond(int P)

{

StringBuilder sb = new StringBuilder();

sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

sb.Append("");

List areas = new List();

int total = 0;                 ///这个调用的函数也是有问题的,没有 处理pageSize=0的情况

areas = new PubInfo.BLL.Area().GetTownAreas(P, 0, 0, out total);

if (SecondNeedZero)

{

sb.AppendFormat("{0}{1}", -1, "请选择...");

}

foreach (PubInfo.Model.Area item in areas)

{

sb.AppendFormat("{0}{1}", item.ID, item.AreaName);

}

sb.Append("");

return sb.ToString();

}

[Ajax.AjaxMethod]

public string Bindthird(int P)

{

StringBuilder sb = new StringBuilder();

sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

sb.Append("");

List areas = new List();

int total = 0;             ///这个调用的函数也是有问题的,没有 处理pageSize=0的情况

areas = new PubInfo.BLL.Area().GetTownAreas(P, 0, 0, out total);

if (ThirdNeedZero)

{

sb.AppendFormat("{0}{1}", -1, "请选择");

}

foreach (PubInfo.Model.Area item in areas)

{

sb.AppendFormat("{0}{1}", item.ID, item.AreaName);

}

sb.Append("");

return sb.ToString();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值