SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Haziran 2012 Perşembe

ASP.NET AJAX Calender Extender

ASP.NET AJAX ile Calender Extender kontrolü bir çok uygulamada bizlere lazım olan bir componenttir. Visual Studio editörlerinin default olarak verdiği calendar kontrolü sayfa düzeni açısından pek elverişli olamayabiliyor. Ancak AJAX ile Calender Extender olaya biraz daha renk katmış gibi görünüyor. Ben de severek ve beğenerek ASP.NET geliştiricilerine AJAX kontrollerini öneriyorum. Bu konuya takiben açıklayıcı ve küçük bir örnekle sizlere Calender Extender'ı  syntax özellikleri ile birlikte basit bir şekilde açıklayacağım.

Ajax Contol Tool Kit'i bilgisayarımza  http://ajaxcontroltoolkit.codeplex.com/ linkinden indiriyoruz ve Visual Studio editöründen ToolBoxta en alttaki taba sağ tıklayıp Add Tab 'ı tıklıyoruz.


Adding a new tab

Bu taba bir isim verdikten sonra(ben AJAX Control Tool Kit yazdım) sağ tıklayıp "Choose Items..." diyoruz.

Choose items to add to the toolbox

Bir form açılacak ve "Browse" butonunu tıklayıp, yukarıdaki linkten indirdiğimiz dosyanın içinden AjaxControlToolkit.dll  seçiyoruz ve tamam diyoruz. Artık AJAX kontrollerini editörümüze ekledik ve sıra geldi Calender Extender kontrolünün kullanımına... ToolBox'tan AJAX sekmesinde bulunan SriptManager kontrolünü de sayfanızın içinde herhangi bir yere bırakınız. 

NOT:ScriptManager olmadan AJAX kontrolleri çalışmaz. Ve arayüz tarafında görünmez.

<asp:ScriptManager ID="ScriptManager1" runat="server" >
</asp:ScriptManager>

<asp:TextBox 
    ID="TextBox1" 
    runat="server" 
    width="200px" />
<asp:ImageButton 
    ID="imgBtnCalender"
    Width="32" Height="32" 
    runat="server" 
    ImageUrl="~/images/calender.bmp" 
    CausesValidation="False" />
<ajaxToolkit:CalendarExtender 
    ID="CalendarExtender1"
    runat="server" 
    TargetControlID="TextBox1" 
    PopupButtonID="imgBtnCalender" 
    Format="dd/MM/yyyy" />

Calender Extender kontrolünde bizim için en önemli 2 parametre vardır.
  1.  TargetControlID
  2. PopupButtonID
TargetControlID tarihin yazılacağı textbox, PopupButtonID de üzerine tıklandığında takvimin açılmasını sağlayan tetikleyici.

Teşekkürler.

Mansur İŞÇEL

27 Ağustos 2011 Cumartesi

LINQ SQL




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

ASP.NET ile Mail Gönderme




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;
}
}
}

Yayınlayan : Mansur İşçel