February 2009 - Posts

En blogglista är en lista där jag samlar utvecklar bloggarnas länkar så andra kan få veta att dom finns. Det finns väldigt många bra C#:NET/Annan MS-Utveckling bloggar.

Engelska

Svenska

Mer bloggar kan man hitta här

Mer bloggar kommer!

Det finns ett tränings kit för Azure Services ute.

Länk

I dagens webbsidor så vill man att det ska vara lätt för en användare att kunna skriva in saker i ett fält. Då är det bra att ha ett popup fönster eller en javascript kalender man kan välja ett datum, sedan hamnar det i textboxen med hjälp av javascript. Jag hade tänkt visa ett exempel som använder asp:calendar.  Vi behöver två .aspx sidor, Default.aspx och DatePicker.aspx. I Default så skriver vi in denna kod i <form> taggen,

<h1>Datum väljare</h1>
Event Namn: <asp:textbox id="txtEventName" runat="server" />
Datum: <asp:textbox id="txtEventDate" runat="server" />
<a href="javascript:;" onclick="calendarPicker('Form1.txtEventDate');" title="Välj ett datum från kalendern">Välj ett datum</a>

 Det ser inte svårt ut alls? Det enda som kan vara lite svårt att förstår är a href:en som har en onclick="", det är en javascript funktion som gör så att vi öppnar ett popup fönster med asp:canlender i.

Såhär ser javascript funktionen ut

function calendarPicker(strField)
{
window.open('DatePicker.aspx?field=' + strField,'calendarPopup','width=250,height=190,resizable=yes');
}

I funktionen har vi en window.open() där vi väljer att öppna våran DatePicker.aspx i ett popup fönster. 'strField' är våran Form1.txtEventDate som finns i a href:en

Sedan i DatePicker.aspx.cs så har vi några rader kod som gör det möjligt att klicka på ett datum så det hamnar i txtEventDate.

 

private void Calendar1_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
e.Cell.Controls.Clear();
System.Web.UI.HtmlControls.HtmlGenericControl Link = new System.Web.UI.HtmlControls.HtmlGenericControl();
Link.TagName = "a";
Link.InnerText = e.Day.DayNumberText;
Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.{0}.value = \'{1:d}\'; window.close();", Request.QueryString["field"], e.Day.Date));

e.Cell.Controls.Add(Link);
}

Vi använder DayRender för att kunna välja ett datum som ska läggas in i våran textbox. Vi skapar en a href med en länk för varje datum med javascript som gör så att det valda datumet hamnar i textboxen.

override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Calendar1.DayRender += new System.Web.UI.WebControls.DayRenderEventHandler(this.Calendar1_DayRender);
}

Instället för att skriva in Calendar1_DayRender i asp.net koden, så gör vi det med C# istället. Koden här ovan.

Exempel

jQuery är ett bra javascript ramvärk som man kan använda till sin webbutveckling. Lite kod så kan man göra bra och användbara saker faktiskt. Jag hade tänkt visa ett exempel här,

Först så behöver vi såklart skriva en script tag i vår html kod som länkar in jquery.

Allitd när man gör något med jQuery så behöver man ha en document.ready funktion.

$(document).ready(function() {
    /// Din kod här...
});

Exemplet här jag tänker visa har tre olika a href taggar, en där det kommer upp en varning innan man klickra på den, andra som gömmer sig så den inte syns och den tredje som är en normal länk.

 

$("a")
   .filter(".clickme")
     .click(function() {
         alert("Du lämnar nu sidan");
     })
   .end()
   .filter(".hideme")
     .click(function() {
         $(this).hide();
         return false;
     })
   .end();

Det är din jQuery kod som du lägger imellan document.ready.

.filter(".clickme") är en funtkion så jQuery koden tar dom a href som har en class="clickme". När man klickar på den länken som har den klassen så kommer du få en varning med texten "Du lämnar nu sidan"

Samma sak med .filter(".hideme"), men där så kommer den länken att gömma sig. $(this).hide() gör så att dem gömmer sig.

Här nedan så är dom tre a href taggarna. Två stycken som har en class="", en med class="clickme" och den andra med class="hideme". Den tredje länken har ingen class="" utan är en vanlig länk.

<a href="http://google.com/" class="clickme">Varnings länken</a>
<a href="http://yahoo.com/" class="hideme">Klicka för att gömma mig!</a>
<a href="http://microsoft.com">Jag är en normal länk</a>
 

 Så lätt är det att jobba med jQuery, det är inte alls svårt. Jag har bifogat en exempel sida här nedan. Mer kan du läsa på jQuery.com

Jag tycker personligen att det är intressant att kolla på utvecklings videor och sådant. Sedan så var presentationerna på PDC2008 väldigt intressanta med där jag kollade på dom.

Så ett tips till er som vill se dom

Länk till PDC2008 filmerna

Ibland så är det svårt att hitta var alla SDK's är. Men som tur har Microsoft gjort en sida där dom samlar alla SDK's

Denna sida kommer bli användbar för mig!

Länk till samlingen

En samlig utav länkar för er som utvecklar.

ASP.NET

iTunes skin grid

Check/Uncheck all Items in an ASP.NET CheckBox List using jQuery

ASP.NET Dynamic Data

Videos från ASP.NET hemsidan

'Many to Many' field template for Dynamic data 

ASP.NET Dynamic Data - Simple 5 Table Northwind Example

Customizing ASP.NET Dynamic Data

ASP.NET MVC

ASP.NET MVC on IIS 6 Walkthrough

Hierarchical Treeview with ASP.NET MVC & jQuery

Simple jQuery Delete Link For ASP.NET MVC

ASP.NET AJAX

ASP.NET AJAX 4.0: Observing updates to POJOs (Plain 'Ole JavaScript Objects)

Instantiating components on template markup

Using the power of binding to animate changes

Sharepoint

SharePoint QuickLaunchExtender

Javascript libs for SharePoint 2007

Ett sätt att hitta en kontroll i en ContentPlaceHolder är detta. I exemplet som är i C# här nedan så har jag använt mig av en Repeater som jag vill hitta. Först så behöver vi hitta rätt ContentPlaceHolder och det gör vi med hjälp utav detta.

ContentPlaceHolder content = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
 
När vi väl har hittat det så är det sedan lätt att hitta den kontrollen vi söker efter.
 
Repeater Rep = content.FindControl("Repeater1") as Repeater;
 
content är den funktionen som kommer ut ur ContentPlaceHolder's find control. När vi hittar Repeatern vi söker efter så skriver vi ett namn för den som vi sedan kan använda för att få fram funktionerna.
Vi lägger sedan till denna rad kod, som gör så ifall vi inte skulle hitta kontrollen på grund av något så hoppar den över allt som finns in i if satsen. Och applikationen kraschar inte.
if (Rep != null)
{
    /// Your stuff here
}
 
Hela exemplet
 
ContentPlaceHolder content = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
Repeater Rep = content.FindControl("Repeater1") as Repeater;
if (Rep != null)
{
    /// Your stuff here
}
Exempel fil

 Ett tips bara till dom som inte har testat betan, det går fortfarande att ladda ner betan här.

På Channel9 så finns det massa bra filmer om utveckling. Detsutom så finns det filmer från Msdn Sverige, dom kan vara lite svåra att hitta. Här är länken till Msdn Sverige på Channel9

Mycket bra filmer finns där!

More Posts