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.


Hvordan få tilgang til / legge inn et objekt i et annet objekt

av Øyvind A. Isaksen
 
I dette eksemplet har jeg 2 objekter, det ene heter "Link" og det andre heter "Log". Disse benyttes i et system som logger antall klikk på linker. I tabellen "tblLog" lagres info om hvert klikk, samt ID'en til linken som logges. I "tblLink" lagres informasjon om de linkene som skal logges. Når vi skal ta ut Log-info fra vår "Loghandler", så vil vi samtidig trenge å hente ut informasjon fra Link objektet. Denne artikkelen viser 3 forskjellige metoder å gjøre dette på!

----------------------------
Metode 1: Log.cs
----------------------------

// Her instansierer vi Link-objektet i Log objektet.


[Serializable()]
public class Log
{
public Log()
{
//Instansierer Link objektet når man oppretter Log-objektet
Link = new Link();
}

internal int _Id;
public int Id
{
get { return _Id; }
}

private Link _Link;
public Link Link
{
get
{
return _Link;
}
set
{
_Link = value;
}
}

private int _LinkId;
public int LinkId
{
get { return _LinkId; }
set { _LinkId = value; }
}

private string _Referer;
public string Referer
{
get { return _Referer; }
set { _Referer = value; }
}

private string _Time;
public string Time
{
get { return _Time; }
set { _Time = value; }
}
}


I LogHandler må du legge inn verdien / verdier på Link objektet "i" Log objektet. Det gjør du på følgende måte:

while (dr.read())
{
Log.IP = dr["IP"].ToString();
Log.Referer = dr["Referer"].ToString();

// Log.Link = new Link(); // (Skal ikke være nødvendig å kjøre denne)
Log.Link.Name = dr["LinkName"].ToString();
Log.Link.Url = dr["Url"].ToString();

LogCollection.add(Log);
}



----------------------------
Metode 2: Log.cs
----------------------------

// Man kan også sette Link som static som vist under, slipper da å
// instansiere Link objektet for å få tilgang til det (som i metode 1):


[Serializable()]
public class Log
{
public Log()
{
}

internal int _Id;
public int Id
{
get { return _Id; }
}

private static Link _Link;
public static Link Link
{
get { return _Link; }
set { _Link = value; }
}

private int _LinkId;
public int LinkId
{
get { return _LinkId; }
set { _LinkId = value; }
}

private string _Referer;
public string Referer
{
get { return _Referer; }
set { _Referer = value; }
}

private string _Time;
public string Time
{
get { return _Time; }
set { _Time = value; }
}
}


I LogHandler må du legge inn verdien / verdier på Link objektet "i" Log objektet. Det gjør du på følgende måte:

Log.Link.Name = dr["LinkName"].ToString();
Log.Link.Url = dr["Url"].ToString();
osv...

Når du skal skive ut Log.Link.Name i en greidview gjør du følgende:

<asp:TemplateField>
<ItemTemplate><%# ((Log)Container.DataItem).Link.Name %></ItemTemplate>
</asp:TemplateField>



----------------------------
Metode 3: Log.cs (Anbefalt)
----------------------------

// Her henter vi link objektet direkte vha en en egen metode "GetLink(LinkId)".
// Objektet hentes kun hvis det ikke tidligere er hentet (_Link == null).
// For å sørge for bedre ytelse bør du også cache objektet i GetLink() metoden.


public class Log
{
public Log()
{
}

internal int _Id;
public int Id
{
get { return _Id; }
}

private Link _Link;
public Link Link
{
get
{
//Henter kun første gang (hvis Link objektet ikke er satt)
if (_Link == null)
{
_Link = new LinkHandler().GetLink(LinkId);

}
return _Link;
}
set
{
_Link = value;
}
}

private string _LinkName;
public string LinkName
{
get { return _LinkName; }
set { _LinkName = value; }
}

private int _LinkId;
public int LinkId
{
get { return _LinkId; }
set { _LinkId = value; }
}

private string _Referer;
public string Referer
{
get { return _Referer; }
set { _Referer = value; }
}

private string _Time;
public string Time
{
get { return _Time; }
set { _Time = value; }
}
}


Legger også på en egen property som heter "LinkName" i Log objektet.
I LogHandler må du da legge inn verdien til "linkName". Det gjør du på følgende måte:

Log.LinkName = dr["LinkName"].ToString();




----------------------------
Binder til en GridView
----------------------------



Fungerer for metode 1 og 2:

<asp:GridView runat="server" ID="grdOverview">
<Columns>
<asp:TemplateField>
<ItemTemplate><%# ((Log)Container.DataItem).Link.Name %></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>



Fungerer for metode 3:

<asp:GridView runat="server" ID="grdOverview">
<Columns>
<asp:TemplateField>
<ItemTemplate><%# ((Log)Container.DataItem).Link.Name %></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate><%# ((Log)Container.DataItem).LinkName %></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate><%# DataBinder.Eval(Container.DataItem, "Linkname") %></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


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: 14838892.
Copyright WebRessurs.no © 2003 - 2018
Jobbsøk.no - Jobbsøknad, CV, intervju, tips og lenker