Posts Tagged “webutveckling”

Jag har länge använt besöksräknaren och statistikverktyget reinvigorate för att hålla koll på besökare till mina siter. Kanske inte lika avancerat som google analytics men lite roliga funktioner har den allt. (Mycket snyggare är den också!)

Till en av höjdpunkterna hör Reinvigorate Snoop som är en tung klient du kan ladda hem och ha igång på datorn för att live följa dina besökare/vart dom kom ifrån. Ett trevligt litet ljud spelas upp, olika beroende på om besökare är refererad, skrev adressen själv osv.

Ytterligare ett tidsfördriv sätts upp på listan!

Comments Inga kommentarer »

I asp.net kan man använda “validators” som hjälper dig att på 5 sekunder validera inmatningen i textboxar (clientside) Jättebra kontroll, men aningen konstig ibland.

Jag skulle validera en textbox som bara får innehålla siffror, jaha ValidationExpression=”[0-999]” tänker man ju då. Men icke då, såhär ska det se ut ValidationExpression=”^\d+$”

^\d+$ för att validera enbart siffror alltså.

Uppdatering:

God hjälp om regular expressions i asp.net finns här http://msdn.microsoft.com/en-us/library/ms972966.aspx

Comments 4 Kommentarer »

Ska man göra en applikation åt ett företags intranät, vill man ofta kunna autensiera sina användare direkt mot ett (kanske) befintiligt Active Directory. Det är ju superenkelt! Inga inställningar i din kod behövs, det är bara att bocka i “windows authentication” i IIS’en som hostar din site, den måste förstås vara en medlem i AD’t också.

Men om du vill ha en logga ut knapp, då blev det genast lite mer krångligt. Ofta vill man ju det, och dessutom ha en vettig loginsida, med standard windows autensiering hoppar man annars direkt in i siten, inloggad och klar. Lösningen heter att autensiera sig mot ett AD med forms authentication i ASP.NET.

Jag har sökt mycket och länge, men hittade det här briljanta lösningsförslaget hos Microsoft. Fungerar klockrent!

Comments Inga kommentarer »

Ibland vill man kunna ta bort poster i en databas från en gridview. Här följer ett litet exempel på hur man kan göra för att få fram databasradens primärnyckelvärde för att veta vad man ska ta bort (ändra/uppdatera eller vad du vill göra). I “gridview” kontrollen på din aspx sida (ej codebehind) behöver du ange property för “DataKeyNames” (primärnyckeln i din datasource som du anger för gridviewen), välja vilka boundfields du vill visa samt säga åt gridden att rita upp “ta bort”-knappen för varje rad.

<asp:GridView ID=”gridCategories” runat=”server”  DataKeyNames=”categoryId”>
<Columns>
<asp:BoundField DataField=”categoryName” HeaderText=”Kategori” />
<asp:BoundField DataField=”categoryDescr” HeaderText=”Beskrivning” />
<asp:CommandField ShowDeleteButton=”True”  />
</Columns>
</asp:GridView>

Eventet för att tex ta bort heter gridView_RowDeleting()
Du måste hantera det på något sätt, tex i codebehind-filen

protected void gridCategories_RowDeleting(Object sender, GridViewDeleteEventArgs e)
{
//Ta bort raden
string categoryToDelete = gridCategories.DataKeys[e.RowIndex]["categoryId"].ToString();
korSqlCmd(”DELETE FROM kdb_categories WHERE categoryId = ‘” + categoryToDelete + “‘”);
}

//Rita om all data från databasen
showCategories();
}

Det intressanta i koden ovan är [e.RowIndex] som talar om vilken rad i gridden vi håller på med och ["categoryId"] som är en DataKeyName för gridviewen. (primärnyckeln i databasen är ju lämpligt att använda)

Måste också koppla eventet till funktionen i codebehind-filen på aspx sidan:

<asp:GridView ID=”gridCategories” runat=”server”  DataKeyNames=”categoryId”
OnRowDeleting=”gridCategories_RowDeleting” >
<Columns>
<asp:BoundField DataField=”categoryName” HeaderText=”Kategori” />
<asp:BoundField DataField=”categoryDescr” HeaderText=”Beskrivning” />
<asp:CommandField ShowEditButton=”True”  />
<asp:CommandField ShowDeleteButton=”True”  />
</Columns>
</asp:GridView>

Enkelt och nästan identiskt för att redigera och uppdatera. Se alla gridview events man kan använda här.

Comments 1 Kommentar »

Det kan vara smidigt att lagra temporär data i form av sessionvariabler när en besökare surfar på din site. Kanske är det till och med att föredra över requests och querystrings? Varje besökare får ett unikt session-id.

//Deklarera sessionvariabel och tilldela whetever värde
Session["anvandarid"] = getLogin();

På vilken sida som helst kan du sen plocka fram “anvandarid” på följande sätt;

Label1.Text = Session["fornamn"].ToString();

En förutsättning är att sessionen fortfarande är aktiv, vilket den normalt är i 15-20 minuter.

Comments Inga kommentarer »

Är superenkelt men samtidigt en av dom viktigare sakerna att hålla koll på om man ska göra en hyffsat interaktiv webbplats. Det finns två (enkla) sätt att göra detta på, GET och POST. Jag kommer att beskriva den första, GET.

Det hela bygger på klienten skickar något till servern och du tar hand om det och du gör något med det. Ett exempel; en webbutik. Du ser en meny med kategorier, klickar dig vidare och ser en lång lista av produkter. Det vore ju ganska dumt att göra en ny sida för varje produkt, därför skickar man med en variabel som bestämmer vad för något som ska visas.

http://www.enbrawebbutik.com/prod.aspx?id=89964

Här har du som användare klickat på något i en produktlista, prod.aspx är samma för alla produkter, men eftersom du också skickar med id=89964 så kan du bestämma vad för information du vill läsa upp ur databasen och fylla din sida med.

Men hur fångar jag den variabeln på min sida, prod.aspx, då?

Nästan enklare, något i den här stilen: string prodId = Request.QueryString["id"];
Request.QueryString’en hämtar fram det du väljer att skicka med när du ropar på sidan (prod.aspx?id=89964)
Oftast vill man lägga den här deklarationen i Page_Load() eller i en funktion som körs när sidan laddas, så inte användaren ska behöva klicka ytterligare för att fånga upp variabeln. Eftersom du frågar efter Request.Querystring så måste din variabel vara av typen string, om du inte konverterar först.

Vill du ha flera variabler till samma sida, kanske kategori också, går det lika bra;
prod.aspx?id=89964&category=2353

Du hämtar variablerna på precis samma sätt;
string prodId = Request.QueryString["id"];
string categoryId = Request.QueryString["category"];

Sen har du ju dina id’n, bara att göra något i stil med;
hamtaProdInfoSQL(”SELECT * FROM prod WHERE prodId = prodId AND category = categoryId”);

Värt att tänka på

Är att aldrig (läs ALDRIG) låta en GET vara en sql fråga, eller något annat som har för mycket inflytande på hur din kod fungerar. Tex; prod.aspx?id=select * from prod where prodId = 45342

Låt alltid variabeln vara skild från de funktionerna som ska använda den, och kontrollera din indata på något bra sätt så att användaren inte kan, av misstag eller avsiktligt, avslöja känsliga uppgifter eller radera poster i databasen.

Och varför inte då? Jo för då kan en användare lika gärna ändra i adressraden och göra något fult som tex prod.aspx?id=’ or select password from admin eller varför inte göra “drop” på hela din databas. Inte bra.

Exemplen ovan är anpassade för C# men fungerar lika bra i VB, fast du kanske behöver göra små modifikationer.

Comments Inga kommentarer »