Här visas en funktion för att se om ett land är med i EU. Inparameter är landets ISO-landskod och den returnerar en boolean. Mer information om EU-länderna finns på Europa.eu.
Eftersom lokaliserings-funktionerna i ASP.NET är baserade på kulturer (MSDN:CultureInfo) kan det vara lite knepigt att generera en lista över alla världens länder.
Om man även vill ha dem i bokstavsordning får man se till att sortera dem själv. Jag la till alla länderna som nycklar i en SortedList, eftersom denna typ av datasamling automatiskt sorteras efter värdet i nycklarna.
Jag visar länderna och deras landskoder i en DropDownList som läggs till på .aspx-sidan.
//Skapa en SortedList för att spara alla länderna med tillhörande landskoder SortedList slAddedCountries = new SortedList();
//Skapa en array av CultureInfo från alla kulturer //Vi använder SpecificCultures men NeutralCultures är ett annat alternativ CultureInfo[] arrayAllCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
try { foreach (CultureInfo ci in arrayAllCultures) {
string country = new RegionInfo(ci.LCID).EnglishName; string countryCode = ci.Name.Substring(3, 2);
if (!slAddedCountries.ContainsKey(country)) { //Spara landets namn som nyckel och landskoden som värde slAddedCountries.Add(country, countryCode); } }
//Lägg till länder som saknas //Cypern slAddedCountries.Add("Cyprus", "CY");
//Loopa igenom SortedList och vi får länderna i bokstavsordning foreach (DictionaryEntry de in slAddedCountries) { Trace.Write("-"+de.Key); DataRow objDataRow = objTable.NewRow(); objDataRow["CountryCode"] = de.Value; objDataRow["CountryName"] = de.Key; objTable.Rows.Add(objDataRow); } } catch (Exception objException) { Trace.Warn("BindCultureSelector() Fel!", objException.Message); } finally {
}
return objTable.DefaultView; }
Här kommer ett del av den html-kod som skapas med de länder som ligger runt Sverige (i bokstavsordning alltså).
Inte helt självklart alltså. Det går säkert att göra på något bättre sätt men detta är den bästa lösning jag kommit på. Annars kan man ju prova med en fristående databas över länder, t ex från GeoNames.
Uppdatering: Märkte att Cypern inte är med i ramverket av någon anledning. Konstigt eftersom landet blev självständigt 1960. Jag har lagt till en extra rad i koden som lägger till Cypern manuellt.
NASA bjuder på en riktigt vacker bild som föreställer vår planet nattetid. Man ser städernas ljus och de liknar nästan stjärnhimmel. Kolla in en högupplöst version eller läs mer om bildserien "Earth's city lights". (via Smidigt.se)
Packet Garden är något så coolt som en applikation för att visualisera den nätverkstrafik som sker på din dator. Data du laddar upp blir berg och nedladdad data representeras som dalgångar. Trafiken visar även vart på jorden trafiken skickas via genom geografiskt lokalisering. Plantor växer upp och för varje protokoll som används som 'HTTP plantor' och 'peer to peer plantor'.
Jag har testkört programmet lite och det är verkligen häftigt. När ens planet är uppbyggd kan man rulla runt på den med en liten boll och utforska planeten. Programmet är dock ganska resurskrävande och mitt grafikkort klarar inte riktigt av det. Efter några minuter på planeten så hänger sig programmet ofta. Men om du har en dator med mera kraft så kan det nog fungera bättre.
Höll på att testa lite med att koppla en XMLDataSource till en DropDownList och stötte på lite problem. Jag fick följande felmeddelande:
System.Web.UI.WebControls.XmlDataSourceNodeDescriptor innehåller inte någon egenskap med namnet name.
Efter lite sökning på nätet kom jag underfund med att det inte går att ange DataTextField till ett fält-värde i xml-filen. Det ska vara attribut till en tagg för att det ska fungera. Här är ett exempel på den xml fil som jag testade med som för övrigt är genererad av an tjänst på www.geonames.org och visar "first-order administrative division" Sverige. Jag ville få fram alla län men tror inte detta var helt rätt. Resten av parametrarna som man kan skicka med finns på en lista, här.
Jag hittade lösningen som jag använder på Raj Kaimal's blogg. För att transformera xml-filen ovan så att name blir ett attribut till geoname kan man använda en XSLT-fil (TransformGeonames.xsl) som ser ut så här.