天天看點

一個城市自定義控件

抽點時間寫了一個自定義空間,功能是這樣的,實作省份,城市的級聯更新.資料源是資料庫,設計思路是這樣的,利用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 >

繼續閱讀