天天看点

一个城市自定义控件

抽点时间写了一个自定义空间,功能是这样的,实现省份,城市的级联更新.数据源是数据库,设计思路是这样的,利用prototype1.5 提供的AJAX功能实现控件级联无刷新功能,请求一个Httphandler,读取数据.

控件呈现:

一个城市自定义控件

using  System;

一个城市自定义控件

using  System.Collections.Generic;

一个城市自定义控件

using  System.ComponentModel;

一个城市自定义控件

using  System.Text;

一个城市自定义控件

using  System.Web;

一个城市自定义控件

using  System.Web.UI;

一个城市自定义控件

using  System.Web.UI.WebControls;

一个城市自定义控件

using  Ucar.Common;

一个城市自定义控件

using  System.Data;

一个城市自定义控件

using  Ucar.Components.Caching;

一个城市自定义控件
一个城市自定义控件

namespace  BitAuto.Ucar.CarSelectSortData

一个城市自定义控件
一个城市自定义控件

... {

一个城市自定义控件

    [DefaultProperty("Text")]

一个城市自定义控件

    [ToolboxData("<{0}:CitySelect runat=server></{0}:CitySelect>")]

一个城市自定义控件

    public class CitySelect : WebControl, INamingContainer, IPostBackDataHandler

一个城市自定义控件
一个城市自定义控件

    ...{

一个城市自定义控件

        private string _validationExpression = @"^[1-9]d*$";

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 控件集合

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        private Label lblProvince = new Label();

一个城市自定义控件

        private DropDownList dropProvince = new DropDownList();

一个城市自定义控件

        private Label lblCity = new Label();

一个城市自定义控件

        private DropDownList dropCity = new DropDownList();

一个城市自定义控件
一个城市自定义控件

        private RegularExpressionValidator valeCityValue = new RegularExpressionValidator();

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        //控件属性#region //控件属性

一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 城市ID

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("Value")]

一个城市自定义控件

        [DefaultValue("0")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("Value")]

一个城市自定义控件

        public string Value

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                if (this.CityId == 0 || this.CityId == -1)

一个城市自定义控件
一个城市自定义控件

                ...{

一个城市自定义控件

                    return string.Empty;

一个城市自定义控件

                }

一个城市自定义控件

                return ConvertHelper.GetString(this.CityId);

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["Value"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 省份ID

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("省份ID")]

一个城市自定义控件

        [DefaultValue("0")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("省份ID")]

一个城市自定义控件

        public int ProvinceId

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetInteger(ViewState["ProvinceId"]);

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["ProvinceId"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 城市ID

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("城市ID")]

一个城市自定义控件

        [DefaultValue("0")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("城市ID")]

一个城市自定义控件

        public int CityId

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetInteger(ViewState["CityId"]);

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["CityId"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 布局方式

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("布局方式")]

一个城市自定义控件

        [DefaultValue("Horizontal")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("布局方式")]

一个城市自定义控件

        public RepeatDriections RepeatDriection

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

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

一个城市自定义控件
一个城市自定义控件

                ...{

一个城市自定义控件

                    return RepeatDriections.Horizontal;

一个城市自定义控件

                }

一个城市自定义控件

                return (RepeatDriections)ViewState["RepeatDriection"];

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["RepeatDriection"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 省份样式

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("省份样式")]

一个城市自定义控件

        [DefaultValue("")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("省份样式")]

一个城市自定义控件

        public string ProvinceCssClass

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetString(ViewState["ProvinceCssClass"]);

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["ProvinceCssClass"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 城市样式

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("城市样式")]

一个城市自定义控件

        [DefaultValue("")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("城市样式")]

一个城市自定义控件

        public string CityCssClass

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetString(ViewState["CityCssClass"]);

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["CityCssClass"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 标签是否可见

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        [Bindable(true)]

一个城市自定义控件

        [Category("标签是否可见")]

一个城市自定义控件

        [DefaultValue("True")]

一个城市自定义控件

        [Localizable(true)]

一个城市自定义控件

        [Description("标签是否可见")]

一个城市自定义控件

        public bool LableVisible

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

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

一个城市自定义控件
一个城市自定义控件

                ...{

一个城市自定义控件

                    return true;

一个城市自定义控件

                }

一个城市自定义控件

                return ConvertHelper.GetBoolean(ViewState["LableVisible"]);

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["LableVisible"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        [Category("是否启用非空验证")]

一个城市自定义控件

        [DefaultValue(false)]

一个城市自定义控件

        [Description("是否启用非空验证")]

一个城市自定义控件

        public bool EnabledRequiredFieldValidator

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetBoolean(ViewState["EnabledRequiredFieldValidator"]);

一个城市自定义控件

            }

一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["EnabledRequiredFieldValidator"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        [Category("验证提示信息")]

一个城市自定义控件

        [DefaultValue("请选择城市!")]

一个城市自定义控件

        [Description("验证提示信息")]

一个城市自定义控件

        public string ErrorMessage

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetString(ViewState["ErrorMessage"]);

一个城市自定义控件

            }

一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["ErrorMessage"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件

        [Category("验证分组")]

一个城市自定义控件

        [DefaultValue("")]

一个城市自定义控件

        [Description("验证分组")]

一个城市自定义控件

        public string ValidationGroup

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            get

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                return ConvertHelper.GetString(ViewState["ValidationGroup"]);

一个城市自定义控件

            }

一个城市自定义控件

            set

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ViewState["ValidationGroup"] = value;

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件

        #endregion

一个城市自定义控件
一个城市自定义控件

        protected override void RenderContents(HtmlTextWriter output)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            if (this.Page != null)

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                this.Page.VerifyRenderingInServerForm(this);

一个城市自定义控件

            }

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID + "_hdProvinceId");

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID + "_hdProvinceId");

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Value, this.ProvinceId.ToString());

一个城市自定义控件

            output.RenderBeginTag(HtmlTextWriterTag.Input);

一个城市自定义控件

            output.RenderEndTag();

一个城市自定义控件
一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID + "_hdCityId");

一个城市自定义控件

            output.AddAttribute(HtmlTextWriterAttribute.Value, this.CityId.ToString());

一个城市自定义控件

            output.RenderBeginTag(HtmlTextWriterTag.Input);

一个城市自定义控件

            output.RenderEndTag();

一个城市自定义控件

            if (RepeatDriection == RepeatDriections.Vertical)

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                output.RenderBeginTag(HtmlTextWriterTag.Div);

一个城市自定义控件

                output.Write("<DIV class='" + this.ProvinceCssClass + "' >");

一个城市自定义控件

                lblProvince.RenderControl(output);

一个城市自定义控件

                output.Write("&nbsp;&nbsp;");

一个城市自定义控件

                dropProvince.RenderControl(output);

一个城市自定义控件

                output.Write("</DIV>");

一个城市自定义控件

                output.Write("<DIV class='" + this.CityCssClass + "' >");

一个城市自定义控件

                lblCity.RenderControl(output);

一个城市自定义控件

                output.Write("&nbsp;&nbsp;");

一个城市自定义控件

                dropCity.RenderControl(output);

一个城市自定义控件

                output.Write("</DIV>");

一个城市自定义控件

            }

一个城市自定义控件

            else

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                output.RenderBeginTag(HtmlTextWriterTag.Div);

一个城市自定义控件

                lblProvince.RenderControl(output);

一个城市自定义控件

                output.Write("&nbsp;&nbsp;");

一个城市自定义控件

                dropProvince.RenderControl(output);

一个城市自定义控件

                output.Write("&nbsp;&nbsp;");

一个城市自定义控件

                lblCity.RenderControl(output);

一个城市自定义控件

                output.Write("&nbsp;&nbsp;");

一个城市自定义控件

                dropCity.RenderControl(output);

一个城市自定义控件

            }

一个城市自定义控件

            valeCityValue.RenderControl(output);

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        protected override void CreateChildControls()

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            //省份标签

一个城市自定义控件

            lblProvince.Text = "省份";

一个城市自定义控件

            lblProvince.ID = "lblCarProducer";

一个城市自定义控件

            lblProvince.Visible = LableVisible;

一个城市自定义控件

            this.Controls.Add(lblProvince);

一个城市自定义控件
一个城市自定义控件

            dropProvince.ID = "dropProvince";

一个城市自定义控件

            this.Controls.Add(dropProvince);

一个城市自定义控件
一个城市自定义控件

            //城市

一个城市自定义控件

            lblCity.Text = "城市";

一个城市自定义控件

            lblCity.ID = "lblCarBrand";

一个城市自定义控件

            lblCity.Visible = LableVisible;

一个城市自定义控件

            this.Controls.Add(lblCity);

一个城市自定义控件
一个城市自定义控件

            dropCity.ID = "dropCity";

一个城市自定义控件

            this.Controls.Add(dropCity);

一个城市自定义控件
一个城市自定义控件

            valeCityValue.ID = "_valeCityValue";

一个城市自定义控件
一个城市自定义控件

            valeCityValue.ControlToValidate = this.dropCity.ID;

一个城市自定义控件

            valeCityValue.Display = ValidatorDisplay.None;

一个城市自定义控件

            valeCityValue.ErrorMessage = this.ErrorMessage;

一个城市自定义控件

            valeCityValue.ValidationExpression = _validationExpression;

一个城市自定义控件

            valeCityValue.ValidationGroup = this.ValidationGroup;

一个城市自定义控件

            valeCityValue.SetFocusOnError = true;

一个城市自定义控件

            valeCityValue.Enabled = this.EnabledRequiredFieldValidator;

一个城市自定义控件

            this.Controls.Add(valeCityValue);

一个城市自定义控件
一个城市自定义控件

            dropProvince.Attributes.Add("onchange", "cityLoad(" + this.dropProvince.ClientID + "," + this.dropCity.ClientID + "," + this.UniqueID + "_hdProvinceId" + "," + this.UniqueID + "_hdCityId" + ");");

一个城市自定义控件

            dropCity.Attributes.Add("onchange", "SetCityID(" + this.UniqueID + "_hdCityId" + "," + this.dropCity.ClientID + ");");

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        protected override void OnInit(EventArgs e)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            Page.RegisterRequiresControlState(this);

一个城市自定义控件

            Page.ClientScript.RegisterClientScriptResource(typeof(CitySelect), "BitAuto.Ucar.CarSelectSortData.prototype1.5.1.js");

一个城市自定义控件

            Page.ClientScript.RegisterClientScriptResource(typeof(CitySelect), "BitAuto.Ucar.CarSelectSortData.CityChange.js");

一个城市自定义控件

            base.OnInit(e);

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        protected override void OnPreRender(EventArgs e)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            InitProvince();

一个城市自定义控件

            if (this.CityId != 0)

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                this.ProvinceId = City.GetProvinceIdByCityId(this.CityId);

一个城市自定义控件

            }

一个城市自定义控件

            if (this.ProvinceId != 0)

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                dropProvince.SelectedValue = ProvinceId.ToString();

一个城市自定义控件

            }

一个城市自定义控件

            InitCity();

一个城市自定义控件

            if (CityId != 0)

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                ControlHelper.InitDropDownListByValue(dropCity, CityId.ToString());

一个城市自定义控件

                //dropCity.SelectedValue = CityId.ToString();

一个城市自定义控件

                //dropCity.SelectedIndex = dropCity.Items.IndexOf(dropCity.Items.FindByValue(CityId.ToString()));

一个城市自定义控件

            }

一个城市自定义控件

            base.OnPreRender(e);

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        IPostBackDataHandler 成员#region IPostBackDataHandler 成员

一个城市自定义控件

        public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            string presentValue = this.ProvinceId.ToString();

一个城市自定义控件

            string postedValue = postCollection[this.UniqueID];

一个城市自定义控件

            string postedProvinceValue = postCollection[this.UniqueID + "_hdProvinceId"];

一个城市自定义控件

            if (presentValue == null || !presentValue.Equals(postedValue))

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                this.CityId = ConvertHelper.GetInteger(postedValue);

一个城市自定义控件

                this.ProvinceId = ConvertHelper.GetInteger(postedProvinceValue);

一个城市自定义控件

                return true;

一个城市自定义控件

            }

一个城市自定义控件
一个城市自定义控件

            return false;

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        public void RaisePostDataChangedEvent()

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        #endregion

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        //绑定方法#region //绑定方法

一个城市自定义控件

        protected void InitProvince()

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            dropProvince.Items.Clear();

一个城市自定义控件

            DataView dv = City.GetProvinceCache();

一个城市自定义控件

            dv.RowFilter = "pvc_Id<>0";

一个城市自定义控件

            dropProvince.DataTextField = "pvc_Name";

一个城市自定义控件

            dropProvince.DataValueField = "pvc_Id";

一个城市自定义控件

            dropProvince.DataSource = dv;

一个城市自定义控件

            dropProvince.DataBind();

一个城市自定义控件

            dropProvince.Items.Insert(0, new ListItem("请选择省份", ""));

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        protected void InitCity()

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            dropCity.Items.Clear();

一个城市自定义控件

            DataView dvCity = City.GetCityCache();

一个城市自定义控件

            if (this.ProvinceId != 0)

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                dvCity.RowFilter = "pvc_Id=" + dropProvince.SelectedValue;

一个城市自定义控件

                dropCity.DataTextField = "city_Name";

一个城市自定义控件

                dropCity.DataValueField = "city_Id";

一个城市自定义控件

                dropCity.DataSource = dvCity;

一个城市自定义控件

                dropCity.DataBind();

一个城市自定义控件

            }

一个城市自定义控件

            dropCity.Items.Insert(0, new ListItem("请选择城市", "0"));

一个城市自定义控件

        }

一个城市自定义控件

        #endregion

一个城市自定义控件
一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 布局方式

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        public enum RepeatDriections

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            Vertical,//垂直

一个城市自定义控件

            Horizontal//水平

一个城市自定义控件

        }

一个城市自定义控件

    }

一个城市自定义控件

}

Handler实现:

一个城市自定义控件

using  System;

一个城市自定义控件

using  System.Collections.Generic;

一个城市自定义控件

using  System.Text;

一个城市自定义控件

using  System.Data;

一个城市自定义控件

using  System.Web;

一个城市自定义控件

using  Ucar.Common;

一个城市自定义控件

using  Ucar.Components.Caching;

一个城市自定义控件
一个城市自定义控件

namespace  BitAuto.Ucar.CarSelectSortData

一个城市自定义控件
一个城市自定义控件

... {

一个城市自定义控件

    public class CityHandler : IHttpHandler

一个城市自定义控件
一个城市自定义控件

    ...{

一个城市自定义控件
一个城市自定义控件

        IHttpHandler 成员#region IHttpHandler 成员

一个城市自定义控件
一个城市自定义控件

        public bool IsReusable

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件
一个城市自定义控件

            get ...{ throw new Exception("The method or operation is not implemented."); }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        public void ProcessRequest(HttpContext context)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            OutputCity(context);

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

        #endregion

一个城市自定义控件
一个城市自定义控件

        /// <summary>

一个城市自定义控件

        /// 输出

一个城市自定义控件

        /// </summary>

一个城市自定义控件

        protected void OutputCity(HttpContext context)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            string ProvinceIdStr =  context.Request["ProvinceId"];

一个城市自定义控件

            if (!string.IsNullOrEmpty(ProvinceIdStr))

一个城市自定义控件
一个城市自定义控件

            ...{

一个城市自定义控件

                DataView dvCity = City.GetCityCacheByProvinceId(ProvinceIdStr);

一个城市自定义控件

                StringBuilder sb = new StringBuilder();

一个城市自定义控件

                int i = 0;

一个城市自定义控件

                for (i = 0; i < dvCity.Table.Rows.Count; i++)

一个城市自定义控件
一个城市自定义控件

                ...{

一个城市自定义控件

                    sb.Append(dvCity.Table.Rows[i]["city_Name"] + "," + dvCity.Table.Rows[i]["city_Id"] + ",");

一个城市自定义控件

                }

一个城市自定义控件

                 context.Response.Write(sb.ToString().TrimEnd(','));

一个城市自定义控件

            }

一个城市自定义控件

        }

一个城市自定义控件
一个城市自定义控件

    }

一个城市自定义控件
一个城市自定义控件

}

一个城市自定义控件

JS:

一个城市自定义控件

  function  cityLoad(dropProvinceid,dropCityid,hdProvinceId,hdCityId)

一个城市自定义控件
一个城市自定义控件

     ... {

一个城市自定义控件

        var father= $F(dropProvinceid);

一个城市自定义控件

        $(hdProvinceId).value=father;

一个城市自定义控件

        $(hdCityId).value = '';

一个城市自定义控件

        if(father!=0)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            var url = "~/AjaxCity.aspx";

一个城市自定义控件

            var pars = "provinceID=" + father;

一个城市自定义控件
一个城市自定义控件

            var myAjax = new Ajax.Request(url,...{method: 'get', parameters: pars, onComplete:function(originalRequest)...{showResponse(originalRequest,dropCityid)}});

一个城市自定义控件

         }

一个城市自定义控件

         else

一个城市自定义控件
一个城市自定义控件

         ...{

一个城市自定义控件

            var sel = $(dropCityid);

一个城市自定义控件

            sel.update("");

一个城市自定义控件

            CreatOptions(sel,"请选择城市","");

一个城市自定义控件

         }

一个城市自定义控件

    }

一个城市自定义控件

     function  SetCityID(hdCityId,dropCity)

一个城市自定义控件
一个城市自定义控件

     ... {

一个城市自定义控件

        $(hdCityId).value=$F(dropCity);

一个城市自定义控件

    }

一个城市自定义控件

     function  showResponse(result,dropCityid)

一个城市自定义控件
一个城市自定义控件

     ... {

一个城市自定义控件

        var sel = $(dropCityid);

一个城市自定义控件

        var val = result.responseText.split(',');

一个城市自定义控件

        sel.update("");

一个城市自定义控件

        CreatOptions(sel,"请选择城市","");

一个城市自定义控件

        for(i=0;i<val.length;i++)

一个城市自定义控件
一个城市自定义控件

        ...{

一个城市自定义控件

            text = val[i];

一个城市自定义控件

            value = val[++i];

一个城市自定义控件

            CreatOptions(sel,text,value);

一个城市自定义控件

        }

一个城市自定义控件

    }

一个城市自定义控件

     function  CreatOptions(colls,text,value)

一个城市自定义控件
一个城市自定义控件

     ... {

一个城市自定义控件

        colls.options.add(new Option(text,value));

一个城市自定义控件

    }

一个城市自定义控件

在使用的时候配下hander和连接字符串.

一个城市自定义控件

< httpHandlers >

一个城市自定义控件

             < remove  verb ="*"  path ="*.asmx" />

一个城市自定义控件

              < add  verb ="*"  path ="AjaxCity.aspx"  validate ="false"  type ="BitAuto.Ucar.CarSelectSortData.CityHandler,BitAuto.Ucar.CarSelectSortData" />

一个城市自定义控件

         </ httpHandlers >

继续阅读