Ana Sayfa >> ASP.Net >> ASP.Net ile Dinamik vCalendar Dosyası Oluşturma
Kategoriler
 ASP.Net
 C#.Net
 VB.Net
 SQL Server
 SQL Script
 Eğlence
 Haberler
 Görsel Ders
 Ücretsiz Programlar
 Diğer

Dost Siteler
 Volkan KORKMAZ
 Sem GÖKSU
 Mustafa Altuntaşlar
 Adnan TÜRK
 Ergün YÜCEL
 Koray KOCABAŞ
 Yazılım Uzmanı
 Yaz Geliştir
 Yazılım Günlüğü
 Code Project

Takvim
<Temmuz 2010>
PztSalÇarPerCumCmtPaz
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Hakkımda
Windows Live Alerts
 E-Posta
 Msn ( )
 Skype


Login with Facebook
 
 ASP.Net ile Dinamik vCalendar Dosyası Oluşturma

Bu makalemizde ASP.Net ile Dinamik vCalendar dosyalarının nasıl oluşturulduğuna değineceğiz. Oluşturduğumuz dosyaları Outlook içinde randevu dosyası olarak kullanabileceğiz. Böylelikle yapacağımız sitelerde kullanıcılara hatırlatma işlemlerinde büyük kolaylık sağlayacaktır. Ör. Bir etkinlik sisteminde, etkinlikleri tek tek kullanıcıların elle oluşturması yerine sistemin otomatik oluşturması kullanıcılara büyük kolaylık sağlayacaktır.

Gelelim geliştireceğimiz uygulamaya, açıklamada da belirttiğim gibi bir Etkinlik yayınlama sistemi oluşturacağız. Öncelikle kullanacağımız tabloyu oluşturalım.



 


EventID
,
Summary: Etkinlik başlığı için kullanacağız.
Description: Etkinlik açıklaması için kullanacağız.
StartDate: Etkinlik başlangıç tarihi.
EndDate: Etkinlik bitiş tarihi. 

 

Etkinlikleri göstermek için Repeater kullanacağız ve Dosyayı oluşturmak için de Repeater’ın ItemCommand eventı kullanacağız. Dikkat etmemiz gereken bir nokta daha var. ResponseEncodind özelliğini türkçe olarak yani “iso-8859-9” belirtmemiz gerekiyor. Aksi halde türkçe karakterlerde problem yaşayabilirsiniz.

Default.aspx


<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ResponseEncoding="iso-8859-9" %>
<html>
<head runat="server">
    <title></title>
</head>
<body style="font-family: Tahoma; font-size: 11px;">
    <form id="frmMain" runat="server">
        <div style="width: 600px;">
            <asp:Repeater ID="rptEvents" runat="server" OnItemCommand="rptEvents_ItemCommand">
                <ItemTemplate>
                    <b>
                        <asp:Label ID="lblSummary" runat="server" Text='<%#Eval("Summary") %>' ForeColor="Maroon"></asp:Label>
                    </b>
                    <hr style="color: #e8e8e8; border-style: dotted; height: 1px;" />
                    <asp:Label ID="lblDescription" runat="server" Text='<%#Eval("Description") %>'></asp:Label><br />
                    <br />
                    <em><b>Başlangıç Tarihi:</b>
                        <asp:Label ID="lblStartDate" runat="server" Text='<%#Eval("StartDate") %>'></asp:Label></em>
                    <br />
                    <em><b>Bitiş Tarihi:</b>
                        <asp:Label ID="lblEndDate" runat="server" Text='<%#Eval("EndDate") %>'></asp:Label></em>
                    <br />
                    <asp:LinkButton ID="lbCreateFile" runat="server" CommandName="CreateFile"> Takvime Ekle </asp:LinkButton>
                </ItemTemplate>
                <SeparatorTemplate>
                    <br />
                    <br />
                </SeparatorTemplate>
            </asp:Repeater>
        </div>
    </form>
</body>
</html>
 
 

Kod kısmına geçiyoruz...

Default.aspx.cs


protected
void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //Veritabanı bağlantımızı kurup Etkinlikleri çekiyoruz, 
        //sonrasında bir DataSet'e eşitleyip Repeater kontrolüne dolduruyoruz...
        SqlConnection con = new SqlConnection("Server=.; Database=vCalendar; User Id=……….");
        SqlDataAdapter da = new SqlDataAdapter("Select * From Events Order By StartDate", con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        rptEvents.DataSource = ds;
        rptEvents.DataBind();
    }
}

protected void rptEvents_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    //Repeater kontrolünden yakaladığımız Etkinliğin bilgilerini almaya başlıyoruz...
    if (e.CommandName == "CreateFile")
    {
        //Summary: Etkinlik başlığı için kullanacağız...
        string Summary = ((Label)e.Item.FindControl("lblSummary")).Text;
        //Description: Etkinlik açıklaması için kullanacağız...
        string Description = ((Label)e.Item.FindControl("lblDescription")).Text;
        //StartDate: Etkinlik başlangıç tarihi...
        string StartDate = Convert.ToDateTime(((Label)e.Item.FindControl("lblStartDate")).Text).ToString("yyyyMMddTHH0000");
        //EndDate: Etkinlik bitiş tarihi...
        string EndDate = Convert.ToDateTime(((Label)e.Item.FindControl("lblEndDate")).Text).ToString("yyyyMMddTHH0000");
        //UID: Tekilliği korumak için random bir metin oluşturuyoruz...
        string UID = Guid.NewGuid().ToString().Replace("-", ""); 
        //sbText ile etkinlik dosyamızın içeriğini oluşturaceğız ve adım adım gerekli alanları ekleyeceğiz...
        StringBuilder sbText = new StringBuilder();
        //BEGIN:VCALENDAR ile Calendar dosyanın başladığını belirtiyoruz...
        sbText.Append("BEGIN:VCALENDAR" + Environment.NewLine);
        //BEGIN:VEVENT ile Etkinliğin başladığını belirtiyoruz...
        sbText.Append("BEGIN:VEVENT" + Environment.NewLine);
        //DTSTART ile Etkinliğin başlangıç tarihini belirtiyoruz...
        sbText.Append("DTSTART:" + StartDate + Environment.NewLine);
        //DTEND ile Etkinliğin bitiş tarihini belirtiyoruz...
        sbText.Append("DTEND:" + EndDate + Environment.NewLine);
        //UID ile dosyanın tekilliğini belirtiyoruz...
        sbText.Append("UID:" + UID + Environment.NewLine);
        //DESCRIPTION ile Dosya ayrıntısını belirtiyoruz...
        sbText.Append("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" + Description + Environment.NewLine);
        //SUMMARY ile Dosya başlığını belirtiyoruz...
        sbText.Append("SUMMARY;ENCODING=QUOTED-PRINTABLE:" + Summary + Environment.NewLine);
        //END:VEVENT ile Etkinliğin bittiğini belirtiyoruz...
        sbText.Append("END:VEVENT" + Environment.NewLine);
        //END:VCALENDAR ile Calendar dosyanın bittiğini belirtiyoruz...
        sbText.Append("END:VCALENDAR");
        //Dosya içeriğini oluşturduktan sonra dosya tipini text/x-vCalendar olarak belirtiyoruz...
        Response.ContentType = "text/x-vCalendar";
        //Dosya ismini belirtiyoruz...
        Response.AddHeader("Content-Disposition", "filename=" + UID + ".vcs;");
        //ve ekrana çıktısını alarak dosyayı oluşturuyoruz...
        Response.Write(sbText.ToString());
        Response.End();
    }
}
 
 

Sayfalarımızı oluşturduktan sonra çalıştırıyoruz...



Yukarıdaki gibi bir ekran çıktısına erişiyoruz. Tabi bu arada siz tabloya birkaç veri girmeyi unutmayın
J Örnek verilere ve tabloya makale sonundaki linkten erişebilirsiniz. “Takvime Ekle” dediğimizde ise bize aşağıdaki gibi ekran sunacak...



Response.Write ile dosyayı oluşturup kullanıcıya sunmuş oluyoruz. Kullanıcı “Aç” butonunu kullanıp açabilir ya da kaydedp daha sonra işlemlerini yapabilir.



Son işlem kullanıcı açtığında Outlook ile entegrasyonunu tamamlayıp işlemleri gerçekleştirebilir.

Makale Dosyaları:
http://rapidshare.com/files/97946247/prjVCalendar.rar
(Not: Dosyanın direkt download özelliği vardır. Sağ tıklayıp “Farklı Kaydet“ seçeneği ile beklemeden, hızlı bir şekilde indirebilirsiniz.)

Başka bir makalemde görüşmek dileğiyle...

Gökhan BAĞCI
Microsoft Certified Professional
gokhanbagci.com
 

Eklenme Tarihi: 08.03.2008 14:01:00
Yorum Yaz
Gönderen
Başlık
Yorum


Yorumlar
Süperr
Hocam bütün makaleleriniz gibi buda ço güzel olmuş. Yeni güzel makalelerinizi sabırsızlıkla bekliyorum :)
Yazan: Ziya USLU , Tarih: 15.03.2008
Eline sağlık
Kardeşim araştırmacı azmin ve sektöre kazandırdığın makalelerinle bir çok arkadaşa ışık tutuyorsun. Güzel makale eline sağlık...
Yazan: Adnan TÜRK , Tarih: 20.03.2008
Eline sağlık
Öğrencilere gösterdim. Bedava reklam
Yazan: Adnan TÜRK , Tarih: 05.04.2008




2006-2008 © Gökhan BAĞCI
Tüm hakları saklıdır.