LOADING

Type to search

Att använda egna Collections i .NET

Att använda egna Collections i .NET

Share

På begäran ska jag skriva hur man går tillväga, hela vägen, för att använda egna Collections i sin applikation. För att göra det har vi lite förkunskapskrav.

Till grund för detta ligger vår Dataklass för SQL Server http://crs.rappendal.se/post/2008/07/Dataklass-for-SQL-Server.aspx Den är mycket enkel att bygga om till MySQL eller Access om man vill det.
Vi använder också egna Collections som ärver List<T> http://crs.rappendal.se/post/2008/09/Smartare-anvandning-av-List3cT3e.aspx.

Jag tänker visa enklast möjliga lösning här, där jag listar länder med flaggor. Jag visar först koden för ~/App_Code/CRS.Flags.cs

[code]
using System;
using System.Data;

public namespace CRS
{
public class Flag
{
private int _Id;
private string _Image;
private string _Country;
public Flag()
{
}
public Flag(int id, string image, string country)
{
this._Id = id;
this._Image = image;
this._Country = country;
}

public int Id
{
get {return this._Id;}
set {this._Id = value;}
}
public string Image
{
get {return this._Image;}
set {this._Image = value;}
}
public string Country
{
get {return this._Country;}
set {this._Country = value;}
}
}

public class FlagCollection : List<Flag>
{
public static FillFromDataReader (System.Data.IDataReader reader)
{
while (reader.Read())
{
this.Add(new Flag(int.Parse(reader["id"].ToString()), reader["image"].ToString(), reader["country"].ToString()));
}
reader.Close();
}
}
}
[/code]
Där har vi hela klassen för flaggorna, inklusive FlagCollection, som alltså är samlingen med flaggor. Nästa steg är att skapa dessa collections. Jag brukar skapa en klass som jag kallar FlagFunctions, där jag lägger diverse metoder för att hämta dessa klasser. Jag visar den här:
[code]
public namespace CRS
{
public static class FlagFunctions
{
public static FlagCollection GetAll()
{
using (CRS.Data data = new CRS.Data())
{
data.CommandText = "SELECT id, image, country FROM tblFlags";
IDataReader reader = data.ExecuteReader();
return new FlagCollection(reader);
}
}
}
}
[/code]
Fint så långt, och inga konstigheter hoppas jag. Nu är det bara det enkla kvar. Det är själva aspx-sidan. För att göra det enkelt har jag inte använt CodeBehind här, utan bakat in koden på sidan, men det gör du ju som du vill. I skarpt läge använder jag uteslutande CodeBehind. Att använda serverkod i aspx-sidan tycker jag är fult.
[code]
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
rpt.DataSource = CRS.FlagFunctions.GetAll();
rpt.DataBind();
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater runat="server" ID="rptFlags">
<ItemTemplate>
<asp:Image runat="server" ImageUrl='<%#Eval("Image") %>’ AlternateText='<%#Eval("Country") %>’ />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
[/code]

http://crs.rappendal.se/post/2008/09/Att-anvanda-egna-Collections.aspx

Leave a Comment

Your email address will not be published. Required fields are marked *