Löydä kotikuntasi halvin laajakaista Laajakaistavertailu.fi sivun avulla.

lauantai 29. marraskuuta 2008

Päivitys 29.11.2008

Tein tänään sivuille päivityksen, joka auttaa sivuilla olevien mainosten seurannassa.

Tradedoublerin mainoksissa on ns. epi-koodi, jonka avulla näkee, miltä sivulta mainoksia on klikattu. Tavoitteena oli, että jos sivu on dynaamisesti luotu sivu, jossa esitetään kaupunkien laajakaistahintoja, kaupungin numeerinen arvo välitetään mainoksen epi-koodiksi. Esimerkiksi Lahden kunnan tietojärjestelmissä käytettävä koodi on 398. Halusin epi-koodin olevan tällöin lkv398.

Sivullani on Tradedoubler-mainoksia kahdessa paikassa: jokaisen sivun ylälaidassa sekä kaupunkikohtaisissa laajakaistalistauksissa.

Kaupunkikohtaiset laajakaistalistaukset

Kaupunkikohtaiset laajakaistalistaukset haetaan kannasta GridView-elementtiin. Yritykseen liittyvä URL-osoite on tietokannassa kytketty yrityksen ominaisuudeksi eli se on Companies-taulun Url-kentän arvo. Tietokannan rakenteen kannalta ei olisi ollut järkevää, että Companies-taulun ja Cities-taulun CityID-arvojen välillä olisi ollut yhteys. Näin ollen päätin tehdä tämän kytkennän ulkoasussa.

Aluksi lisäsin GridView-elementtiin TemplateField-sarakkeen, jonne laitoin HyperLink-komponentin:
<asp:HyperLink ID="lnkUrl" runat="server" NavigateUrl='<%#Eval("Urli")%>'><%#Eval("Yritys")%></asp:HyperLink>







Tämän jälkeen minun piti Code Behind -luokassa manipuloida GridView-elementin HyperLink-komponentin NavigateUrl-ominaisuutta:
protected void GridView2_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Row != null) &amp;amp;&amp;amp; (e.Row.RowType == DataControlRowType.DataRow))
{
if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Yritys")) == "dna")
{
HyperLink h
= (HyperLink)e.Row.FindControl("lnkUrl");
h.NavigateUrl = "http://clk.tradedoubler.com/click?p(47946)a(1540629)g(16338912)epi(lkv" + CityID + ")url(http%3A%2F%2Fwww.dnafinland.fi%2FshowContent.do%3Fcontent%3DkimppaKauppa%26selectedMenuItem%3DAAX%26viewtype%3Dmokkula)";
}
}
}
}



Tässä käytin CityID-muuttujaa, jonka arvo asetetaan Page_Load:n aikana:
CityID = Request.QueryString["CityID"];




Apua tällaisen toiminnallisuuden tekemiseen:
http://forums.asp.net/t/1081478.aspx
http://forums.asp.net/p/1329414/2663609.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx
http://www.csharphelp.com/board2/read.html?f=1&i=47986&t=47986
http://authors.aspalliance.com/aspxtreme/webforms/controls/addinghyperlinkfieldstogridview.aspx
http://forums.asp.net/p/1068900/1555774.aspx#1555774
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlink.aspx

Sivun ylälaidassa oleva banneri

Sivun ylälaidassa oleva banneri sijaitsee sovelluksensa MasterPage-tiedostossa. Epi-koodin asettaminen piti tehdä täällä keskellä JavaScript-elementtiä. Onneksi ASP.NET:ssä voi lähettää muuttujia minne vain käyttämällä rakennetta:
<%=variablename %>





Käytännössä määrittelin MasterPage:n Code Behind -tiedostossa muuttujan tradedoublerinfo, jonka arvo on asetettu arvoksi "".

Tämän jälkeen yksittäisessä Child-sivussa käytän tätä muuttujaa ja asetan sille halutun arvon. Esim. City.aspx.cs:ssä asetetaan tämä arvo seuraavasti:
((Laajakaistavertailu)Master).tradedoublerinfo = CityID;






Apua tällaisen toiminnallisuuden tekemiseen:
http://www.velocityreviews.com/forums/t297249-how-to-update-or-change-the-master-page-variables-from-a-different-page.html

Ei kommentteja:

Laajakaistavertailu.fi kertoo sinulle, millä operaattori on tarjota kotikuntasi halvin laajakaista.