Groups | Blog | Home
all groups > sql server (alternate) > february 2004 >

sql server (alternate) : CountrySelector control


versteijn NO[at]SPAM 538mail.nl
2/29/2004 9:36:21 AM
Hello all

I am developing a CountrySelector control (which I would like to share
with anyone), but I am quite a newby in this custom control area.

You can find it at:
http://home.kabelfoon.nl/~juliusd/vbnet/CountrySelector.vb

Some questions I have are:
- In what event should the items be added. In this case (PreRender)
items added on every render (duh) and get duplicated when ViewState is
enabled. Best would be if the items show up in the designer already
but only in designmode and not with <ListItem> in the HTML source.
- How can I override ViewState get/set methods to only save the
current selection and not the whole collection? It will also need to
save whether it is the first render (for the use of the DefaultCountry
property)
- What behaviour to expect when an invalid countrycode is selected by
consuming (.net) code (e.g. in the DefaultCountry property)?
- Is it possible to use System.Globalization to populate the
collection with country(code)'s?

Thank you in advance.

Hope to hear from you

Freek Versteijn



Here is the concept code:



Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

<ToolboxData("<{0}:CountrySelector
runat=server></{0}:CountrySelector>")> Public Class CountrySelector
Inherits System.Web.UI.WebControls.DropDownList
Protected _DefaultCountry As String

<Description("The initial country's code")> _
Public Property DefaultCountry() As String
Get
Return _DefaultCountry
End Get
Set(ByVal Value As String)
_DefaultCountry = ("" & Value).ToUpper()
End Set
End Property

'TODO:
' [ ] Move adding of items to other method?
' [ ] Show DefaultCountry at first render
' [ ] ViewState to only save the selected item
' [ ] Use System.Globalization (RegionInfo.DisplayName or
..EnglishName depending on CurrentCulture) for populating the Items
collection if possible

Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
Items.Add(New ListItem("Albania", "AL"))
Items.Add(New ListItem("Algeria", "DZ"))
Items.Add(New ListItem("American Samoa", "AS"))
Items.Add(New ListItem("Andorra", "AD"))
Items.Add(New ListItem("Angola", "AO"))
Items.Add(New ListItem("Anguilla", "AI"))
Items.Add(New ListItem("Antarctica", "AQ"))
Items.Add(New ListItem("Antigua/Barbuda", "AG"))
Items.Add(New ListItem("Argentina", "AR"))
Items.Add(New ListItem("Armenia", "AM"))
Items.Add(New ListItem("Aruba", "AW"))
Items.Add(New ListItem("Australia", "AU"))
Items.Add(New ListItem("Austria", "AT"))
Items.Add(New ListItem("Azerbaijan", "AZ"))
Items.Add(New ListItem("Bahamas", "BS"))
Items.Add(New ListItem("Bahrain", "BH"))
Items.Add(New ListItem("Bangladesh", "BD"))
Items.Add(New ListItem("Barbados", "BB"))
Items.Add(New ListItem("Belarus", "BY"))
Items.Add(New ListItem("Belgium", "BE"))
Items.Add(New ListItem("Belize", "BZ"))
Items.Add(New ListItem("Benin", "BJ"))
Items.Add(New ListItem("Bermuda", "BM"))
Items.Add(New ListItem("Bhutan", "BT"))
Items.Add(New ListItem("Bolivia", "BO"))
Items.Add(New ListItem("Bosnia", "BA"))
Items.Add(New ListItem("Botswana", "BW"))
Items.Add(New ListItem("Bouvet Island", "BV"))
Items.Add(New ListItem("Brazil", "BR"))
Items.Add(New ListItem("British Indian Ocean Territory",
"IO"))
Items.Add(New ListItem("British West Indies", "WI"))
Items.Add(New ListItem("Brunei Darussalam", "BN"))
Items.Add(New ListItem("Bulgaria", "BG"))
Items.Add(New ListItem("Burkina Faso", "BF"))
Items.Add(New ListItem("Burma", "BU"))
Items.Add(New ListItem("Burundi", "BI"))
Items.Add(New ListItem("Cambodia", "KH"))
Items.Add(New ListItem("Cameroon", "CM"))
Items.Add(New ListItem("Canada", "CA"))
Items.Add(New ListItem("Cape Verde", "CV"))
Items.Add(New ListItem("Cayman Islands", "KY"))
Items.Add(New ListItem("Central Africa", "CF"))
Items.Add(New ListItem("Chad", "TD"))
Items.Add(New ListItem("Chile", "CL"))
Items.Add(New ListItem("China", "CN"))
Items.Add(New ListItem("Christmas Island", "CX"))
Items.Add(New ListItem("Cocos (Keeling) Islands", "CC"))
Items.Add(New ListItem("Colombia", "CO"))
Items.Add(New ListItem("Comoros", "KM"))
Items.Add(New ListItem("Congo", "CG"))
Items.Add(New ListItem("Cook Islands", "CK"))
Items.Add(New ListItem("Costa Rica", "CR"))
Items.Add(New ListItem("Cote D'Ivoire", "CI"))
Items.Add(New ListItem("Croatia", "HR"))
Items.Add(New ListItem("Cuba", "CU"))
Items.Add(New ListItem("Cyprus", "CY"))
Items.Add(New ListItem("Czech Republic", "CZ"))
Items.Add(New ListItem("Denmark", "DK"))
Items.Add(New ListItem("Djibouti", "DJ"))
Items.Add(New ListItem("Dominica", "DM"))
Items.Add(New ListItem("Dominican Republic", "DO"))
Items.Add(New ListItem("East Timor", "TP"))
Items.Add(New ListItem("Ecuador", "EC"))
Items.Add(New ListItem("Egypt", "EG"))
Items.Add(New ListItem("El Salvador", "SV"))
Items.Add(New ListItem("Equatorial Guinea", "GQ"))
Items.Add(New ListItem("Eritrea", "ER"))
Items.Add(New ListItem("Estonia", "EE"))
Items.Add(New ListItem("Ethiopia", "ET"))
Items.Add(New ListItem("Faeroe Islands", "FO"))
Items.Add(New ListItem("Falkland Islands", "FK"))
Items.Add(New ListItem("Fiji", "FJ"))
Items.Add(New ListItem("Finland", "FI"))
Items.Add(New ListItem("France", "FR"))
Items.Add(New ListItem("French Polynesia", "PF"))
Items.Add(New ListItem("French Southern Territories", "TF"))
Items.Add(New ListItem("Gabon", "GA"))
Items.Add(New ListItem("Gambia", "GM"))
Items.Add(New ListItem("Gaza", "XA"))
Items.Add(New ListItem("Georgia", "GE"))
Items.Add(New ListItem("Germany", "DE"))
Items.Add(New ListItem("Ghana", "GH"))
Items.Add(New ListItem("Gibraltar", "GI"))
Items.Add(New ListItem("Greece", "GR"))
Items.Add(New ListItem("Greenland", "GL"))
Items.Add(New ListItem("Grenada", "GD"))
Items.Add(New ListItem("Guadeloupe", "GP"))
Items.Add(New ListItem("Guam", "GU"))
Items.Add(New ListItem("Guatemala", "GT"))
Items.Add(New ListItem("Guiana", "GF"))
Items.Add(New ListItem("Guinea", "GN"))
Items.Add(New ListItem("Guinea-Bissau", "GW"))
Items.Add(New ListItem("Guyana", "GY"))
Items.Add(New ListItem("Haiti", "HT"))
oj
2/29/2004 10:31:42 AM
This question is better answered in .dotnet.framework.aspnet.

Anyway, take a look at this caching article. It should prove useful.

--
-oj
http://www.rac4sql.net


[quoted text, click to view]
versteijn NO[at]SPAM 538mail.nl
3/1/2004 4:12:01 AM
[quoted text, click to view]

This is odd. I swear I posted it to the aspnet and buildingcontrols forums :S

Anyway thank you.

AddThis Social Bookmark Button