Turvenn.no
Webutvikler kurs ASP.NET, C#, CSS mm.

WebRessurs.no - Webprogrammering og ressurs innen ASP, ASP.NET, PHP, SQL, HTML, CSS, Javascript, XML, C#, VB, Flash  mm.

Brukernavn: 
Passord:

Registrèr deg Glemt passord?
Logg deg inn




  ASP.net (199)
  ASP 3.0 (111)
  PHP (30)
  HTML (66)
  SQL (89)
  CSS (46)
  XML (7)
  JavaScript (78)
  Diverse kode (13)


  Programmering (22)
  System og drift (15)
  Trafikk og inntekt (11)
  Guider og tips (22)
  Nyttig lesestoff (23)
  Web forum (604)
  Link galleri (565)


  ASP.NET kurs(5)
  CSS kurs (2)
  JQuery kurs (2)


  Øk trafikken (8)
  Facebook App. (4)
  Microsoft CEO (6)


  Server & web
  Internett & epost
  Systemverktøy
  Sikkerhet
  Fildeling
  Lyd & media
  Diverse software


  Domenesalg
  Metagenerator
  Websikre farger
  WebMail


  Bli medlem!
  Siste innlegg
  Gjestebok
  Tips en venn
  Kontakt oss
  Forsiden




Kode Artikler
Linker


Mål internetthastigheten din.


Opprette objekter og legge dem i en collection, sortere og vise innhold.

av Øyvind A. Isaksen
 
Her lager vi en klasse (MyPageData) som arver fra Dictionary. I denne klassen har vi en strongly typed property med navn "PageName". Her viser vi hvordan du kan opprette en Collection (myPageDataCollection) og legge inn objekter av typen "MyPageData" i denne. I eksempelet er "PageName" en Strongly Typed property, mens "Index" er Loosely typed. Ved hjelp av den geniale klassen  "MyPageDataComparer" vil man kunne sortere collection BÅDE på Strongly Typed properties og Loosely Typed properties. Til slutt viser vi hvordan man ved hjelp av en foreach-løkke kan liste ut dataene man akuratt har lagt inn i collection, både med og uten sortering.

public class MyPageData : Dictionary<String, object>
{
private string pageName;

public string PageName
{
get
{
if (pageName == null)
{
pageName = (string)this["PageName"] ?? "";
}
return pageName;
}
}
}




protected void Page_Load(object sender, EventArgs e)
{
List<MyPageData> myPageDataCollection = new List<MyPageData>();

MyPageData page = new MyPageData();
page.Add("PageName", "Arne");
page.Add("Index", new DateTime(2000, 10, 10));

myPageDataCollection.Add(page);

page = new MyPageData();
page.Add("PageName", "Halvor");
page.Add("Index", new DateTime(2006, 10, 10));

myPageDataCollection.Add(page);

page = new MyPageData();
page.Add("PageName", "Bjarne");
page.Add("Index", new DateTime(2003, 10, 10));

myPageDataCollection.Add(page);

page = new MyPageData();
page.Add("PageName", "Odd");
page.Add("Index", new DateTime(2002, 10, 10));

myPageDataCollection.Add(page);


Response.Write("Ikke sortert liste:<br />");

foreach (MyPageData _page in myPageDataCollection)
{
Response.Write(_page.PageName + " - " + _page["Index"] + "<br />");
}


Response.Write("Sortert liste:<br />");

myPageDataCollection.Sort(new MyPageDataComparer("Index",typeof(DateTime)));

foreach (MyPageData _page in myPageDataCollection)
{
Response.Write(_page.PageName + " - " + _page["Index"] + "<br/>");
}


if (!Page.IsPostBack)
{

}
}




/// <summary>
/// MyPageDataComparer
/// </summary>
/// <param name="propertyName"></param>
/// <param name="sortAsc">Default = true</param>
/// <param name="propertyType"></param>
public class MyPageDataComparer : IComparer<MyPageData>
{
string propName;
string propTypeString;
bool sortAscending;

public MyPageDataComparer(string propertyName, bool sortAsc, Type propertyType)
{
propName = propertyName;
sortAscending = sortAsc;
propTypeString = propertyType.ToString();
}

public MyPageDataComparer(string propertyName, Type propertyType)
{
propName = propertyName;
sortAscending = true;
propTypeString = propertyType.ToString();
}

public MyPageDataComparer(string propertyName, bool sortAsc)
{
propName = propertyName;
sortAscending = sortAsc;
}

public MyPageDataComparer(string propertyName)
{
propName = propertyName;
sortAscending = true;
}

public int Compare(MyPageData x, MyPageData y)
{
switch (propTypeString)
{
case "System.String":
return (sortAscending ? 1 : -1) * (string.Compare((string)x[this.propName] ?? "", (string)y[this.propName] ?? ""));
case "System.Int32":
return (sortAscending ? 1 : -1) * (((int?)x[this.propName] ?? 0) > ((int?)y[this.propName] ?? 0) ? 1 : -1);
case "System.DateTime":
return (sortAscending ? 1 : -1) * DateTime.Compare((DateTime?)x[this.propName] ?? DateTime.MinValue,

(DateTime?)y[this.propName] ?? DateTime.MaxValue);
default:
return (sortAscending ? 1 : -1) * (string.Compare(x[this.propName] != null ? x[this.propName].ToString() : "",

y[this.propName] != null ? y[this.propName].ToString() : ""));
}
}


// Man bruker den slik:

// Sorterer stigende etter verdi (Antar Type = string)
//Collection.Sort(new MyPageDataComparer(”PageName”));

// Sorterer synkende etter verdi (Antar Type = string)
//Collection.Sort(new MyPageDataComparer(”PageName”, false));

// Sorterer stigende etter verdi (Type = int)
//Collection.Sort(new MyPageDataComparer(”Index”, typeof(int)));

// Sorterer synkende etter verdi (Type = int)
//Collection.Sort(new MyPageDataComparer(”Index”, false, typeof(int)));

//Man kan selvfølgelig alltid bruke alle parametere:
//Collection.Sort(new MyPageDataComparer(”PageName”, true, typeof(string)));

}

WebRessurs.no anbefaler:    StackOverflow.com | Experts-Exchange.com | W3schools | ASP.NET | Codeproject | 4Guys
WebRessurs.no er utviklet og drives av SoftMaker
Sett som startside: [ ]. Bokmerk denne siden: [ klikk ]. Sitemap. http://twitter.com/webressurs_no/. Antall brukersesjoner: 14065057.
Copyright WebRessurs.no © 2003 - 2018
Jobbsøk.no - Jobbsøknad, CV, intervju, tips og lenker