02 Şub 2008 yazilimgunlugu.com Seminerleri Kategori: Yazılım Etiketler: Yazılım Günlüğü 5 Yorum Çok yakın bir zamanda yazilimgunlugu.com olarak seminerler düzenlemeyi planlıyoruz. Tüm yazılımgunlugu.com üyelerine tarih ve saat konusunda mailing yapılacaktır. Seminerlerlerin konuları asagıdaki gibidir.Microsoft Dynamic CRM 4.0 - Volkan KorkmazSQL Server 2008 - Hasan Mansur Silverlight - Daron YöndemASP.NET Ajax 1.0 - Sem GöksuC# - Levent Yıldız
02 Şub 2008 Küçük Bir Yenilik :) Kategori: Benden Etiketler: 0 Yorum Uzun zamandır site ile ilgili çalısma yapamıyordum. Bugün bir fırsat buldum ve takvim ekledim siteye :) Tabi tek degisikli bu degil, fontlar da da Verdana yerine Trebuchet MS kullanıyorum artık. Bu fontu daha önce nasıl kesfedemedim bilmiyorum :))
01 Şub 2008 Kendi WAP Sitemizi Nasıl Yaparız? Kategori: Mobil Etiketler: Windows Phone 0 Yorum Merhaba arkadaşlar, bu makalemizde kendi WAP sitemizi nasıl yapacağımıza bakacağız..Ilk 2 makalemiz de WAP' a giris yapmıs ve WAP' da kullanabilecegimiz kontrolleri incelemistik. Bu makalemiz de ise tüm bu bilgileri toparlayıp kendi WAP sitemizi gelistiriyor olacagız. Bunun için gerekli olan Materyaller su sekildedir J Visual Studio, MS Access (Siz isterseniz SQL Server yada MySQL de kullanabilirsiniz), ASP.NET Destekli Bir Hosting. Access de kullanacagımız tablolar asagıdaki gibidir. Kategoriler ve Icerikler isimli 2 tablo olusturuyorum. Içerisini kendimize göre dolduralım J Kategoriler Hakkımda Resimler Haberler Icerikler Hakkımdaki bilgilere buradan ulasabilirisiniz Resimlerimi burada bulabilirsiniz Benden haberleri buradan takip edebilirsiniz Evet bilgilerimizi bu sekilde olusturduk. Simdi asıl konumuza dönelim ve wap sayfamızı olusturalım. Yeni Bir Web projesi olusturalım ve projemize Default.aspx ve Icerik.aspx isimli 2 adet mobil form ekleyelim. Default.aspx de Kategorilerimiz listelenecek. Icerik.aspx de ise o kategoride yer alan haberler listelenecek. Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <mobile:Form ID="Form1" Runat="server" Title="Sem GÖKSU - WAP"> <mobile:Image ID="Image1" Runat="server" ImageUrl="csharp.gif" NavigateUrl="default.aspx"> </mobile:Image> <br /> <mobile:Panel ID="Panel1" Runat="server"> </mobile:Panel> <mobile:Label ID="Label1" Runat="server"> </mobile:Label> <mobile:Image ID="Image2" Runat="server" ImageUrl="google.gif" NavigateUrl="http://wap.google.com"> </mobile:Image> </mobile:Form> </body> </html> Default.aspx.cs protected void Page_Load(object sender, EventArgs e) { try { OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("wapsite.mdb")); OleDbDataAdapter Da = new OleDbDataAdapter("Select * from Kategoriler", Conn); DataSet Ds = new DataSet(); Da.Fill(Ds, "tbl"); for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { Link myLink= new Link(); // myLink isimli yeni Bir Link Türetiyoruz. myLink.Text = Ds.Tables[0].Rows[i]["KategoriAdi"].ToString(); //Text Özelliginde Kategori Adı Yazacak.. myLink.NavigateUrl = "Icerik.aspx?KategoriID=" + Ds.Tables[0].Rows[i]["KategoriID"].ToString() + "&KategoriAdi=" + Ds.Tables[0].Rows[i]["KategoriAdi"].ToString(); // Gidecegi sayfayı belirtiyoruz... Panel1.Controls.Add(myLink); // Olusturdugumuz Linki panel içerisine ekliyoruz. } } catch (Exception) { // Response.Write("Baglanamıyorum :("); // Bu sekilde kullanamıyoruz Label1.Text = "Sistem de hata meydana geldi, Lütfen daha sonra tekrar deneyiniz :("; } } Ana sayfamızın son hali yukarıdaki gibidir. Simdi içerikleri görüntüleyecegimiz sayfaya geçelim. Icerik.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Icerik.aspx.cs" Inherits="Icerik" %> <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <mobile:Form ID="Form1" Runat="server"> <mobile:Image ID="Image1" Runat="server" ImageUrl="csharp.gif" NavigateUrl="default.aspx"> </mobile:Image> <br /> <mobile:TextView ID="TextView1" Runat="server"> </mobile:TextView> <mobile:Link ID="Link1" Runat="server" NavigateUrl="default.aspx">Ana Sayfa</mobile:Link> <br /> <mobile:Image ID="Image2" Runat="server" ImageUrl="google.gif" NavigateUrl="http://wap.google.com"> </mobile:Image> <mobile:Label ID="Label1" Runat="server"> </mobile:Label> </mobile:Form> </body> </html> Icerik.aspx.cs protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["KategoriID"] != null && Request.QueryString["KategoriAdi"] != null) { try { OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("wapsite.mdb")); OleDbDataAdapter Da = new OleDbDataAdapter("Select * from Icerikler where KategoriID = " + Request.QueryString["KategoriID"], Conn); DataSet Ds = new DataSet(); Da.Fill(Ds, "tbl"); string Content = ""; Content ="<b>" +Request.QueryString["KategoriAdi"].ToString() + "</b><br/>"; Form1.Title = Request.QueryString["KategoriAdi"].ToString(); for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { Content += Ds.Tables[0].Rows[i]["Icerik"].ToString(); } TextView1.Text = Content; } catch (Exception) { // Response.Write("Baglanamıyorum :("); // Bu sekilde kullanamıyoruz Label1.Text = "Sistem de hata meydana geldi, Lütfen daha sonra tekrar deneyiniz :("; } } else { RedirectToMobilePage("default.aspx"); // Mobile Formlarda yönlendirme bu sekilde oluyor. } } Içerik sayfamızda sekildeki gibi, geriye kalan tek sey Emulatorden yada cep telefonumuzdan ilk wap sitemizi test etmek. Iste Sonuç :) Bu makalenin de sonuna geldik. Bir sonraki makale de görüsmek üzere. Iyi çalısmalar dilerim Makale ile ilgili dökümanı indirmek için tıklayınız Sem Göksusem.goksu@yazilimgunlugu.com www.semgoksu.com | www.yazilimgunlugu.com Kaynaklar http://www.w3schools.com http://www.msdn.com
31 Oca 2008 WAP ile ilgili yazmış olduğum Makaleler Kategori: Benden Etiketler: .NET FrameworkWindows Phone 0 Yorum http://www.yazilimgunlugu.com/ArticleDetails.aspx?ArticleID=428 > Wap'a Giris http://www.yazilimgunlugu.com/ArticleDetails.aspx?ArticleID=430 > Wap Kontrolleri http://www.yazilimgunlugu.com/ArticleDetails.aspx?ArticleID=431 > Ilk Wap Sitemiz Okumanızı tavsiye ederim J
31 Oca 2008 WAP’ da Kullanılan Kontroller Kategori: Mobil Etiketler: Windows Phone 0 Yorum Merhaba arkadaşlar, bu makalemizde wap sitesi yapmak için kullandığımız kontrolleri inceliyor olacağız… WAP' da Hangi Kontrolleri Kullanırız? Makalemizin ilk bölümünde de söyledigim gibi WAP' da kullanabilecegimiz kontrol sayısı sınırlı sayıdadır. Gridview, DataList ve diger Listeleme kontrolleri bulunmuyor. (Bunların yerine ObjectList ve List Kontrolü Geldi). Kontrolleri incelemeye basladıgımız da karsımıza tanıdık kontroller çıkacak. Form: Her Wap sayfasında en az bir Mobile Form olmalıdır. Web sayfalarında oldugu gibi bir sayfada birden fazla da Mobile Form da olabilir. Label: WAP Sayfalarında metinleri göstermek için kullanılır. Yine web' deki label ile aynı isi yapar ve aynı özelliklere sahiptir. (Font, Text, vb gibi.). Not: Wapda Label,Tek satırlık veri gösterilmesine izin verir. Textbox: Kullanıcıların WAP Sayfalarında tek satırlık veri girisini yapmasını saglayan kontroldür. Web' dekinden farkı sadece tek satır olmasıdır. Diger özellikleri web ile aynıdır. (Alignment, Font, Text, MaxLenght gibi.) Panel: WAP Sayfalarında diger kontrollerin içerisini eklenmesini saglayan kontroldür. Diger kontroller de oldugu gibi web deki ile tüm özellikleri aynıdır. Image: Mobil sayfalar da resimlerin gösterilmesini saglar. AdRotator: WAP Sayfalarında resimlerin rastgele gösterilmesini saglayan reklam kontrolüdür. Calendar: WAP Sayfalarında kullanabilecegimiz takvim kontrolüdür. Validation Controlleri: Kullanıcıların Textboxlara girdigi verileri dogrulamak için kullanılan kontrollerdir. Webdekilerle aynı olan kontroller bunlar ama Mobile özel kontroller de var. Simdi bunları da inceleyelim. Command: Aslında Webdeki buton ile aynı isi yapar. Microsoft böyle bir isimlendirmeye gitmistir. Ilgili islemin post edilmesini saglar. Bazı özellikleri söyledir; CommandName:ItemCommand eventi ile iliskili bir commanddir. CommandArgument: Command hakkında ek bilgi tutulmasını saglar. Format: Command'in formatını belirler. Buton yada Link gibi görünmesini saglar. TextView: Label ile aynı isi yapar yanı metinlerin gösterilmesini saglar. Label'dan farkı birden fazla satır içerebilir. Içerisine yazılabilen metin içerisinde diger html kodların yazılmasına izin verir. Bunun dısında tüm özellikleri Mobile Label ile aynıdır. List: WAP sayfaların da liste olusturmak için kullanılır. DataSource , DataTextField ve DataValue özelligi vardır. Bu sayede database'den doldurulabilir. ItemsAsLinks : Bu özellikle liste içerisindeki verileri link olarak da gösterebiliriz. Webdeki listbox'a benzer. Tüm eventleri Listboxdaki ile aynıdır. SelectionList: WAP sayfalarında seçim yapılabilecek Liste kontrolü olusturmamızı saglar. List'den farkı Dropdown gibi çalısır. Tek bir eleman seçmemizi saglar. SelectType: Bu özellik SelectionList'in nasıl gösterilecegini belirler. DropDown ListBox Radio MultiSelectListBox CheckBox ObjectList: Wap sayfalarında verilerin gösterilmesini saglar. Gridview ve Datalist gibidir. StyleSheet: Wap sayfalarında kullanılan kontrollere sitil uygulanmasını saglayan sitilleri belirler. HTML destekleyen telefonlar da görüntülenir. DeviceSpecific: Cep telefonunun destekledigi markup diline(WML, HTML, XHTML, CHTML) göre ilgili kodun render edilmesini saglar. Örnegin Sony Ericcsonnda t600 de bir sayfa WML olarak render edilirken Nokia n70 de XHTML olarak render edilir. PhoneCall: Belirtilen telefon numarasının aranmasını saglayan WAP kontrolüdür. En önemli propertysi; PhoneNumber'dır. PhoneNumber: Aranacak olan telefon numarası. Örnek -1 Ilk olarak basit bir örnek yapalım J Yazgelistir.com'daki RSS'lerden haberleri çekip bunu sayfamızda gösterelim. Burada asıl deginmek istedigim Textview Kontrolüdür. Yukarıda da belirttigim gibi textview kontrolünün text özelliginde html kontrolünü kullanabiliyorduk. Simdi formumuza bir textview ekleyelim. Daha sonra da formun loadında RSS' den haberleri datasete çekip güzel bir görünüm ile sayfamızda gösterelim. protected void Page_Load(object sender, EventArgs e) { DataSet Ds = new DataSet(); Ds.ReadXml("http://rss.yazgelistir.com/XML/Rss.aspx/1000000000"); // XML'deki verileri datasete alıyoruz. string content = ""; content = "<b>ASP.NET Makaleleri</b><br/><br/>"; // Ilk satırda Bu yazacak for (int i = 0; i < Ds.Tables[3].Rows.Count; i++) { content +="<b>" + Ds.Tables[3].Rows[i]["title"] + "</b><br/>"; // Makalenin baslıgını yazdırıyoruz. content += Ds.Tables[3].Rows[i]["description"] + "<br/>"; // Makalenin özetini yazdırıyoruz. } TextView1.Text = content; // Olusan içerigi textview'in text özelligine set ediyoruz. } Not: Ilk makale de verdigim emulatoru kullanacaksanız dosyaları Emulatorun ulasabilecegi bir adreste tutmanız gerekmektedir. Simdi yazdıgımız kodu test edelim. Bunun için ilk makale de verdigimiz emulatoru kullanabiliriz. (Isterseniz telefonunuzda da test edebilirsiniz) Hayırlı Olsun J Örnek - 2 Bu Örnegimiz de Wap kontrollerinden Object List'i inceleyecegiz. Zaten neredeyse en çok kullanılacak kontrollerden biri budur. Yeni bir proje açalım ve projemize yeni bir mobile form ekleyelim. Mobile form içerisine de bir ObjectList ekleyelim. ObjectList içerisinde Kategoriler tablosundan Kategori adlarını görüntülenmesini saglayacagız. Olusturdugum sayfa su sekildedir. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ObjectList.aspx.cs" Inherits="ObjectList" %> <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %> <html xmlns="http://www.w3.org/1999/xhtml" > <body> <mobile:Form id="Form1" runat="server"> <mobile:ObjectList ID="ObjectList1" Runat="server" CommandStyle-StyleReference="subcommand" LabelStyle-StyleReference="title"> <Field Title="Kategoriler" DataField="CategoryName" /> </mobile:ObjectList> <mobile:Label ID="Label1" Runat="server"> </mobile:Label> </mobile:Form> </body> </html> Simdi mobile formumuz yüklenirken verilerin gelmesini saglayacagız. protected void Page_Load(object sender, EventArgs e) { try { SqlConnection Conn = new SqlConnection("Server=localhost; database=Urbanlulu; trusted_connection=yes"); SqlDataAdapter Da = new SqlDataAdapter("Select * from Categories",Conn); DataSet Ds = new DataSet(); Da.Fill(Ds, "tbl"); ObjectList1.DataSource = Ds; ObjectList1.DataBind(); } catch (Exception) { // Response.Write("Baglanamıyorum :("); // Bu sekilde kullanamıyoruz Label1.Text = "Baglanamıyorum :("; } } Simdi yazdıklarımızı test edelim. Bunun için ilk makale de verdigimiz emulatoru kullanabiliriz. (Isterseniz telefonunuzda da test edebilirsiniz) Süper sonuç J Evet arkadaslar ilk makalemiz de WAP' a hızlı bir giris yapmıstık. Bu makalemizde de WAP kontrollerini inceledik. Bir sonra ki makalemiz de görüsmek üzere. Iyi çalısmalar dilerim. Sem Göksusem.goksu@yazilimgunlugu.com www.semgoksu.com | www.yazilimgunlugu.com Kaynaklar http://www.w3schools.com http://www.msdn.com