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

18 Haziran 2014 Çarşamba

C# ile Interface Kullanımı

Bir örnek üzerinden c# dilinde interface nedir ne amaçla kullanılır anlamaya çalışacağız.Yapacagımız örneği daha iyi anlaşılması açısından olabildikce güncel bir alandan seçmeye çalıştım.Direkt örnegimize geçmeden önce genel olarak interface ‘ ler ile ilgili bilinmesi gereken leri verelim.Interface leri bir sınıfa yön veren öğretmen gibi düşünebilirsiniz , öğretmenin sınıftaki işi genel olarak nedir öğrencilerine doğru yolu göstermek ne yapacaklarını söylemektir işte interface’lerde c# dilindeki class’ların hocaları gibidir.Interface’ler içinde kod yazılmaz dediğimiz gibi sadece yön verir class’a ne yapacagını söyler.Bir class birden çok interface ‘i uygulayabilir ama class bir interface ‘yi kendisine uyguluyor ise kesinlikle tüm method larını ezmek zorundadır.Interface ‘ leri tanımlarken default olarak public atanır protected veya private olarak belirtemeyiz.Interface’lerin yapıcı method’u olmaz aynı şekilde alan (fields) ‘larıda tanımlayamayız.Bu kadar bilgiden sonra birazda kod yazalım.İlk olarak 2 tane interface tanımlayalım.




Interface adları kesinlikle olmasa bile genellikle I ile başlar .Net Framework içindede bir çok örnekleri vardır örnegin : IComparer , IEnumerable sizde bu kurala uyarsanız çok daha anlaşılır kod geliştirmiş olursunuz.Interface lerin tanımlanması interface kelimesi ile yapılmaktadır bu kelimeden sonra gelen kısım interface ‘mizin adıdır.Bizim örnekte kullanacağımız 2 tane interface miz var 1. IAracOzellikleri burada her araçta bulunması gereken alanlar yer almaktadır ayrıca Gosterge adında bir de method içermektedir 2. interface ‘ imizde ise sadece AracPuani methd’umuz vardır bu method’un amacıda araç puanı method unu bu interface ‘den türeyen class ‘lara uygulayabilmek.Burada dikkat edilecek en önemli noktalar dan bir taneside Marka ve Model property ‘lerinin sadece get özelliklerinin bulunması anlayacagınız üzere set değeri olmadığı için bu property’lere atama işlemi yapılamamaktadır sadece içlerindeki bulunan degerler okunabilmektedir.Eğer sadece get özelliği olan bir property’ye değer atamaya çalışırsak şöyle bir hata alırız




Aldığımız hata Mercedes sınıfındaki Marka property ‘ sinin sadece okunabilir olmasıyla ilgili herhangi bir değer atamaya çalışınca derleme anında bu şekilde uyarıyor bizi.Interface’lerimizi yazdıktan sonra 2 tane Mercedes ve Bmw adında sınıf oluşturalım ve kendi interface’lerimizi uygulayalım.




Buradaki Mercedes sınıfımızda sadece IAracOzellikleri interface’imizi uyguladık ve interface içindeki tüm property’lerin get ve set atamalarını yaptık Gosterge ve Bilgiler method’larınıda interface’imizde tanımladığımız için kullandık Bilgiler method ‘ umuzda sınıfımızın özelliklerinn ekrana yazdırıyoruz bu sefer console uygulaması olduğu için genel bir arayüz yapmıyoruz.Marka ve Model property ‘lerimize dikkat ederseniz sadece get kullandık bunun nedeni interfacemizde’de sadece get kullanmıştık.Buradan çıkaracağımız interface de nasıl kullanılmasını istiyorsanız belirliyorsunuz ve tanımladığınız class sizin tanımladığınız sınırlar doğrultusunda gitmek zorunda kalıyor tabiki üstüne ekleyerek class genişleyebilir.Şimdi Bmw sınıfımıza bakalım.




Bmw sınıfımızda kendi yazdığımız 2 interface ‘ ide uyguluyoruz 1 class birden çok interface’i uygulayabilir uygulama şekli 2 interface adı arasına virgul koymaktır.Bu sınıfımızdada marka ve model özelliklerimizi defaut olarak atıyoruz ve onların set özellikleri olmadığına dikkat ediniz.Bmw sınıfımız 2. bir interface ‘i uyguladı peki 1.sinden farkı ne oldu birden çok interface’i kendisine uygulamış class ‘lar uygulanan tüm interface’lerin özelliklerini veya method’larını kullanmak zorundadır.Bmw sınıfımızda AracPuanı’da hesaplanmaktadır buda IAracPuan interface’sinden gelmektedir.Şimdi class ‘larımızı hazırladığımıza göre onları çağıralım ve atanması gereken değerlerini atadıktan sonra sonuca bakalım.




Main ‘in içinde sınıflarımızı çağırıyoruz ve fiyat , hız gibi özelliklerini atadıktan sonra Bilgiler method’umuzu çağırıyoruz.




İlk çagırdığımız sınıf Mercedes olduğu için üstte Mercedes sınıfımızın özellikleri geldi alttaki Bmw sınıfımıza dikkat ederseniz Puan alanı fazladan mevcut bu alan IAracPuan interface’imizde gelmektedir.
İyi çalışmalar.

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

ASP.NET DataList Kullanımı




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.
Yayınlayan : Mansur İşçel
Kaynak: http://www.yazilimmutfagi.com

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