ASP.NET ile DataList

Posted: 24th May 2011 by mansuriscel in Uncategorized

Bu makalemizde DataList kullanarak verileri nasıl listeleyebileceğimizi öğreneceğiz. Bildiğiniz gibi gridview de listeleme işleminde her satır için bir kayıt gelir, DataList’de ise bu özeliği değiştirebiliriz. Aşağıdaki resimde görüldüğü gibi ürünler yan yana üçerli şekilde gösterilmiştir. Kayıtlarımızı bu şekilde göstermenin en kolay yolu DataList kullanmaktır.

Basit bir örnekle Datalist kullanımını anlatalım. İlk oalrak ürünlerimizi kaydedeceğimiz veritabanını oluşturalım. Örneğimizde kullanacağımız veritabanı yapısı aşağıdaki gibi olacaktır.

Yukarıdaki tablomuzu oluşturduktan sonra tablomuza örnek ürün girişi yapalım. Biz toplam 6 ürün giriş yaptık. Resimlerle çok uğraşmamak içinde internete herhangi bir alışveriş sitesindeki resimlerin url adreslerini tablomuzdaki ResimUrl kolonuna yazdık

Datalist kullanırken ürünleri yan yana göstermek için RepeatDirection özelliği vertical olmalıdır. Yan yana kaç kayıt göstermek istiyorsak RepeatColumns özelliğini kullanarak da bunu ayarlarız. Biz örneğimizde yan yana 3 kayıt göstermek istediğimiz için bu değerleri aşağıdaki gibi ayarladık.

RepeatDirection=”Vertical” RepeatColumns=”3″

Datalist için oluşturduğumuz htmş kodumuz aşağıdaki gibi oldu.

////////////////////////////////////////////////////////////////////////////////////////////////////////////

<asp:DataList RepeatDirection=”Vertical” RepeatColumns=”3″ID=”UrunlerDataList” runat=”server” DataKeyField=”UrunId”

OnItemCommand=”UrunlerDataList_ItemCommand” >

<HeaderTemplate>

</HeaderTemplate>

<ItemTemplate>

<table width=”200px”>

<tr>

<td>

<asp:ImageButton CommandName=”DetayGoster”CommandArgument=’<%#Bind(“UrunId”) %>’

ID=”urunresim” ImageUrl=’<%#Bind(“ResimUrl”)%>’ runat=”server” />

</td>

</tr>

<tr>

<td>

<asp:Label ID=”Label1″ runat=”server”Text=’<%#Bind(“UrunAdi”) %>’></asp:Label>

</td>

</tr>

</table>

</ItemTemplate>

<FooterTemplate>

</FooterTemplate>

</asp:DataList>

////////////////////////////////////////////////////////////////////////////////////////////////////////////

Ürüne ait resmi gösterdiğimiz ImageButton için CommandName ve CommandArgument değerlerini setleyerek OnItemCommand eventi içine aşağıdaki kodu yazıyoruz

protected void UrunlerDataList_ItemCommand(object source,DataListCommandEventArgs e)

{

string urunid = e.CommandArgument.ToString();

string url = ”urundetay.aspx?urunid=” + urunid;

Response.Write(“<script>javascript:window.open(‘” + url +”‘,’urun detay’,'menubar=1,resizable=1,width=350,height=250′ )</script>”);

}

ImageButton tıklandığı zaman açılacak popup’a ürün idsini bir querystring ile gönderiyoruz, ürün detay sayfası da aldığı bu ürün id ile ürünün detay bilgilerini alıp gösteriyor. Bizim örneğimizde detay bilgisi yok, siz kendi uygulamanıza göre düzenleme yapabilirsiniz.

Kaynak: http://www.yazilimmutfagi.com

Mansur İşçel

ASP.NET ile Mail Gönderme

Posted: 6th April 2011 by mansuriscel in Uncategorized
Bu makalemizde ASP.NET ve C# ile SMTP server üzerinden mail gönderme kodlarınız yazacağız.
Öncelikle yeni bir ASP sayfası açıyoruz istediğiniz dizaynı yaptıktan sonra forma 3 tane textBox, 1 tane Label ve 1 tane de buton oluşturuyoruz,  TextBox’ un adları : ” txtKonu, txtMesaj ve txtEmail”. Label’in  adını txtSonuc yapıyoruz. txtKonu’ya oluşturulan formadan konuyu giriyoruz, txtMesaj’ a  gönderilecek mesajı yazıyoruz, txtEmail’ e ise gönderen kişinin mail adresi yazılacak. txtSonuc label’ine de maili gönder butonuna bastıktan sonra hata var ise  catch yapısından dönen sonuç görüntülenecek. Aşağıdaki kodu oluşturduğunuz butonun click event’ ine yapıştıryoruz. Bu kodlar % 100 çalışmaktadır.
Kolay gelsin.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
using System.Net.Mail;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnGonder_Click(object sender, EventArgs e)
{
try
{
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(“smtp mail sunucunuz”);
smtp.UseDefaultCredentials = true;
smtp.EnableSsl = false;
smtp.Port = 587;
System.Net.NetworkCredential cred = new System.Net.NetworkCredential(“mail nereye gidecek”, “gidecek mail şifresi”);
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
smtp.Credentials = cred;
mail.Priority = MailPriority.High;
mail.To.Add(“mail gidecek diğer adres”);//isteğe bağlı
mail.To.Add(“mail gidecek diğer adres 2″);//isteğe bağlı
mail.From = new System.Net.Mail.MailAddress(“mail nereye gidecek”);
mail.Subject = txtKonu.Text;
mail.Body = (txtMesaj.Text + ” gönderen kişinin e-maili:” + txtEmail.Text);
mail.IsBodyHtml = false;
smtp.Send(mail);
}
catch (Exception ex)
{
txtSonuc.Text = ex.Message;
}
}
}

Language Integrated Query (Dil’e Entegre Edilmiş Sorgulama), kısaca LINQ, .NET Framework 3.5 sürümüyle birlikte tanımlı gelen bir özelliktir. .NET Framework 3.5 sürümünden önce .NET Framework 2.0′ da eklenti paketleriyle birlikte kullanılabiliyordu.

Bu teknoloji sayesinde veritabanı ile kullanılan programlama dili arasında kodsal bir bütünlük sağlanmıştır, böylece veritabanının programlama dili kullanılarak sorgulanabilmesi sağlanmış, veritabanı kodlarla yönetilebilir hale gelmiştir. LINQ teknolojisi kullanılmadığı durumda veri katmanı ve uygulama katmanı birbirinden bağımsız durumdadır, uygulama katmanında veritabanından bir veri elde edebilmek için veri katmanıyla iletişim için “connection string”(bağlantı katarları)’ ler kullanılır ve bu şekilde bu iki farklı yapı arasında bir köprü oluşturulur. Sonunda elde edilen veriler programlama dilinde alışılmış olunan nesneler şeklinde değildir, doğru verileri elde edebilmek için bu sonuçları programa uygun hale getirmek gerekir, bu da fazladan birtakım işlemler yapmak anlamına gelmektedir.

LINQ teknolojisiyle birlikte veriler nesneler haline dönüşmüştür. Linq teknolojisinde sorgu uygulama katmanında yazıldığında ilk olarak numaralandırılır, yazım hataları varsa onlar sorgulanır. Buradan anlaşılacağı üzere sorgu ifadesi oluşturulduğu an çalışmıyordur, numaralandırılan sorgu ifadesi linq to sql yapısı aracılığıyla çalıştırılır. Çalıştırılan bu sorguyla birlikte sql sunucusundan veriler satırlar halinde aktarılır. Linq to Sql yapısı bu satırları nesneler haline getirir. Bu şekilde veriler nesneler halinde aktarılmış olur. Linq to sql yapısında verilerin nesneler haline gelmesini sağlayan temel yapı dbml (database markup language) sınıfıdır. dbml sınıfıyla projeye bağlanan veritabanında linq teknolojisi kullanılarak sorgulama yapılabilir. dbml ile DataContext (Veri Bağlama) sınıfı oluşturulur, bu kısım “Framework” e girişi sağlar, giriş yapıldıktan sonra “intellisense”, kod tamamlama gibi platformun özelliklerinden faydalanılabilir.  Veritabanı tarafında yer alan tablo, saklı yordam (stored procedure), görünüm (view), fonksiyon gibi unsurlar proje çerçevesinde nesne olarak yer alabilir, bu da linq kurallarının sql üzerinde gerçeklenmesini sağlar. Burada oluşturulan bu nesneler veritabanından çekilen sonuçları üzerlerinde saklayabilirler, alt yapıda constructor (yapıcı)’ larla bu nesneler oluşturulmuştur.

Uygulama:

  1. Linq teknolojisini kullanabilmek için Solution Explorer (Çözüm Gezgini)’ dan proje üzerine sağ tıklanır ve Add (Ekle)-> New Item (Yeni Nesne) seçilir.
  2. Gelen pencerede LINQ to SQL Classes üzerine tıklanır ve veritabanına uygun olarak bir isim verilir.
  3. Daha sonra açılan pencere üzerinden Server Explorer (Sunucu Gezgini)’ a tıklanarak sunucuyla bağlantı kurulur ve sunucu bağlantıları sağ kısımda görüldüğü üzere belirlidir. Bu kısımdan ortadaki boş alana istenilen tablolar sürüklenip bırakılır, ilişkisel veritabanları arasındaki bağlantı otomatik olarak oluşturulur. Ayrıca sağ tarafta boş kalan alanda ise eğer bir metod ya da saklı yordam eklenmişse listelenir.
  4. Oluşan .dbml dosyasına bağlı olan kod dosyası (.cs) incelendiğinde arka tarafta gerçeklenen kodlara ulaşılacaktır, LINQ kullanılarak yeni bir tablo oluşturmak için bu kodlar gerçeklenmelidir. Kod kısmındaki en önemli sınıf DataContext sınıfıdır, “framework” e giriş bu sınıf aracılığıyla sağlanır, bu sınıfla veritabanı programatik ortama bağlanmış olur. Ayrıca referans kısımlarına dikkat edildiğinde System.Data.Linq ve System.Data.Linq.Mapping ek olarak gelmiştir, yeni tablo oluşturulurken bu referanslar eklenmelidir.
  5. Sadece select ifadesiyle gerçeklenen bir işlem ve sonuçları şu şekildedir:
Dbml’ le oluşan “NorthwindDataContext” le yeni bir veritabanı bağlantısı oluşturulur. Sorgu kısmına bakıldığında SQL’ de gerçeklenen ifadelerle büyük oranda benzer olduğu görülmektedir. Dikkat edilecek olunursa “Order” ve “OrderDetail” olmak üzere iki farklı tablo bulunmaktadır, bu tablolardan “OrderDetail” sorgulanmaktadır ancak “p.Order.CustomerID” ifadesiyle diğer tablodaki bir veri üzerinden kısıtlama yapılmaktadır, ilişkisel tablolar arasındaki geçiş oldukça kolay bir şekilde gerçeklenmektedir. Sonuç olarak tüm sütunların gelmemesi için “select” den sonraki “new” ifadesiyle yeni bir şablon oluşturulmuştur. Aynı şekilde tabloya yeni veriler eklenebilir, tablodan veri silinebilir ve tablo üzerinde güncelleme yapılabilir. LINQ veritabanı üzerinde gerçekleştirilebilen bütün uygulamalar için destek sağlamaktadır. Select ifadesinin sonra yazılmasının sebebi ise çoğu programcının sorgu yazarken diğer ifadeleri yazdıktan sonra o kısmı eklemesidir, bu şekilde programcının işi kolaylaştırılmaya çalışılmıştır.
Kaynak: http://www.bidb.itu.edu.tr/
Yayınlayan: Mansur İşçel

ABD’ de İlginç Bir Tez

Posted: 24th February 2011 by mansuriscel in Uncategorized

ABD”de Massachusetts Institute of Technology” de okuyan bir öğrencinin tanık olduğu bu öykü, bir tez çalışmasının nelere yol açacağını göstermesi açısından ilginç bir örnek oluşturuyor:

Bir lisansüstü öğrencisi bir yaz mevsimi süresince her gün üzerine siyah-beyaz çizgili bir tişört giyerek Harvard futbol sahasına gider. 15 dakika boyunca sahayı bir baştan diğer uca yürüyerek yerlere kuş yemi serper. Bu arada cebinden bir hakem düdüğü çıkartıp öttürür. Yağmur, çamur demeden her gün aynı saatte aynı hareketleri törensel bir ciddiyetle yapar. Derken sonbahar gelir, futbol mevsimi başlar.
Harvard futbol takımının ilk maçı oynanacaktır. Siyah-beyaz tişörtlü hakem başlama düdüğünü çalar ve o anda olanlar olur.

Yüzlerce kuş sahaya hücum eder ve doğal olarak maç ertelenir.

Bu arada öğrenci tezini vermiş ve mezun olmuştur.

Kaynak: www.cncteknik.net

Beynimizin niçin tamamını kullanamıyoruz?

Posted: 24th February 2011 by mansuriscel in Uncategorized

Beynimiz yaklaşık 10-12 milyar arası nöron (sinir hücresi) içerir. Ancak bilindiği üzere beynimizin çok düşük bir yüzdesini kullanırız. Bunun nedeni aslında, olgun haldeki sinir hücrelerinin (yani bilgi depolayan nöronların) kendi kendilerini yenileyebilme özelliklerini yitirmiş olmalarıdır. Yürütülen bilimsel çalışmalar olgun sinir hücrelerinin kendilerini yenileyebilmeleri üzerinde önemli gelişmeler kaydettiyse de, bu yenileme oldukça yavaş ve sınırlı miktarlarda gerçekleşmektedir.

Beynimiz, yaşamımız boyunca edindiğimiz bilgileri depolar. Kazanılan her yeni bilgi, sinir hücrelerine işlenir ve buradaki birçok diğer sinir hücresi ile gerekli sinir bağlantılarının kurulması şekli ile depolanır. Günlük olağan işlevleri yerine getirebilmemiz, öğrenilen her yeni bilgiyi etkin bir şekilde kullanabilmemiz ve olaylar arasında bağlantı kurarak yorum yapabilmemiz, bu depolanmış veriler ve oluşturulmuş sinir hücresi bağlantıları sayesinde gerçekleşir. Normal yaşlanma süreci içerisinde, beyin hücrelerimiz de yaşlanır ve zamanla hücre ölümleri gerçekleşir. Herhangi bir darbe veya hastalık durumunda da beyin hücrelerimizin önemli bir bölümünü kaybedebiliriz. İşte bu gibi durumlarda, önemli kabul edilen bilgilerin yeni sinir hücrelerine aktarılması ve yeni sinir bağlantılarının kurulması gerekir. Bu işlem sırasında da beyin, kullanılmayan ve bir nevi “yedek” görevinde olan sinir hücrelerini kullanır. Yine benzer şekilde, her yeni “öğrenme” durumunda da yeni sinir hücreleri kullanılır ve gerekli bağlantılar oluşturulur. Sinir sisteminin dinlenme durumunda olduğu uyku süreci, bu aktarımların yapıldığı ve bağlantıların kurulduğu en önemli aşamadır. Bu nedenle, düzenli uyku alışkanlığı, sinir sisteminin en verimli şekilde çalışması üzerinde oldukça etkilidir.

Kaynak: www.hayatimdegisti.com