Ürfet Demirtaş
Bozkırın yağız programcısı...

ANASAYFA | HAKKIMDA | ASP.NET WEB FORM | C# | BİLGİ GÜVENLİĞİ | LINQ | T-SQL | ASP.NET MVC | GENEL | İLETİŞİM
 
 
MAKALE ARA

ASP.NET Mobile Cihaz Kontrolü

using System;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; 

namespace MobilKontrol
{

    public partial class _Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {

            if (this.IsMobile())
            {
                Response.Redirect("~/MobileSayfa.aspx");
            }
        } 

        public bool IsMobile()
        {

            string[] mobiles =

            new[]
               {
                                          "midp", "j2me", "avant", "docomo",

                    "novarra", "palmos", "palmsource",

                    "240x320", "opwv", "chtml",

                    "pda", "windows ce", "mmp/",

                    "blackberry", "mib/", "symbian",

                    "wireless", "nokia", "hand", "mobi",

                    "phone", "cdm", "up.b", "audio",

                    "SIE-", "SEC-", "samsung", "HTC",

                    "mot-", "mitsu", "sagem", "sony"

                    , "alcatel", "lg", "eric", "vx",

                    "NEC", "philips", "mmm", "xx",

                    "panasonic", "sharp", "wap", "sch",

                    "rover", "pocket", "benq", "java",

                    "pt", "pg", "vox", "amoi",

                    "bird", "compal", "kg", "voda",

                    "sany", "kdd", "dbt", "sendo",

                    "sgh", "gradi", "jb", "dddi",

                    "moto", "iphone"

                };
 

            foreach (string s in mobiles)
            {

                if (Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains(s.ToLower()))
                {

                    return true;
                }

            } 

            return false;
        }

    }
}

Kaynak: http://www.codeproject.com/

Detay [..]

asp.net smtp mail gönderme

using System.Net.Mail;
using System.Net;

    try
        {
            MailAddress From = new MailAddress("info@urfetdemirtas.com", "İLETİŞİM FORMU");

            MailAddress To = new MailAddress("bilgi@urfetdemirtas.com");

            MailMessage Email = new MailMessage(From, To); 

            Email.IsBodyHtml = true;

            Email.Subject = "";

            Email.Body = "<b>Ad : </b>" + txtAd.Text + "<br> <b>Soyad : </b>" + txtSoyad.Text + "<br>" +

            "<b>Telefon : </b>" + txtTel.Text + "<br><b>E - mail : </b>" + txtEmail.Text + "<br><b> Önerileriniz : </b>"

            + txtMesaj.Text;

            SmtpClient MailClient = new SmtpClient("mail.urfetdemirtas.com", 587);

            MailClient.Credentials = new NetworkCredential("info@urfetdemirtas.com", "123test");

            MailClient.Send(Email);
 

            Response.Write("<script> alert('Mesajınız gönderilmiştir.'); </Script>");
        }
        catch (Exception ex)
        {
            Response.Write("Hata Bildirimi " + ex.Message);
        }

Detay [..]

OOP #2 Inheritance , Advanced Class Design (Base/Derived Class)

 Merhabalar

Yazı serimizin ikinci yazısıyla beraberiz.Bu yazımda OOP yaklaşımın en önemli kavramı olan kalıtım(Inheritance) konusunda bahsederek , sınıf kavramını daha ileriye götürmeyi planlıyorum.

Kalıtım; temel de bir sınıftan başka bir sınıf oluşturmamızı sağlayan bir yapıdır.Bu yapı sayesinde sınıflar arası ilişkileri belirleyebilir ve kodlarımızın tekrarlanmasını önleyebiliriz.Gerçek yaşamdan bir örnek vermemiz gerekirse; örneğin bi taşıt sınıfımız olsun bu sınıfı temel bir sınıf olarak belirledik.Dİkkat ederseniz taşıt genel bir tanım içeriyor. Özele inersek araba,kamyonet,tır vs. diyerek devam edebiliriz.Daha sonra araba da genel bir tanım özele inersek spor araba,jeep vs diye devam eder.Bu belirlediğimiz alt kategoriler ayrı birer sınıftır.Yalnız bunları tek tek ayrı olarak tanımlamak anlamsız olur.Çünkü bu kategorilerin hepsi taşıt sınıfının sahip olduğu özellikleri içeriyor.Bu yüzden bu özellikleri baştan yazmıyor taşıt sınıfından kalıtarak elde ediyoruz.Başka bir örneğide şematik olarak görelim.

 

Bir inşaat sınıfı var ve bu sınıf her inşaatın sahip olduğu özelliklere sahip.Peki bu inşaatlar neler olabilir.Ev,hotel,Apartman vb. gibi bir çok inşaat olabilir. En genel tanım ve özellikler inşaat sınıfında, en detaylı ve belirgin özellikler ise alt sınıflarda dağılmış durumda.

Şemadaki ilişkilere baktığınızda görünen ok kısmı temel sınıfı(Base Class) “Building Class” göstermektedir.Diğer sınıflarda türemiş sınıfı(Derived Class) belirtmektedir.İlişki anlamında türemiş sınıflar temel sınıfın sahip olduğu method ve özelliklerin tamamına sahiptirler.Tabi bu erişim seviyelerine de bağlıdır.Dikkat ederseniz constructer ve desrtucter methodlar türemiş yada temel sınıf olması fark etmeden sınıfın kendisine özel olan methodlardır.

Kalıtım “:” karakteri ile sağlanır.Şunuda belitmemiz gerekir.C# çoklu kalıtımı  desteklememektedir.ilerleyen yazılarda bu konuyu da açacağım.Şimdi sözdizimini görelim.

 
public class ClassA
{
     public string a = "";
     private int b = 0;
     protected double c = 1.0;
     internal char d = 'e';
     protected internal object e = "";
}
     
public class ClassB:ClassA
{
         
}
 
public class ClassC :ClassB
{
         
}

Yazılan kodlara ait diagram aşağıdaki gibidir.Burada ki ilişkiler çok öenmli dikkatlice incelemenizi öneririm.

Direct/InDirect Base Class kavramlarına değinelim.Direct Base Class doğrudan temel sınıf yani sınıflar arası ilişkilerdeki en temel sınıfı ifade eder.En tepedeki (ClassA) sınıfdır.InDirect Base Class dolaylı temel sınıftır.Arada kalan sınıfı(ClassB) ifade eder.Bakıldığında CLassB CLassC nin temel sınıfı olduğu açıkca görülmektedir.

Birde iç içe olan sınıflardan (Nested types) söz edelim.Bunu ben de ilk okuduğumda şaşırmıştım hemen denemeye kalkmıştım J.Bir sınıf içerisinde bir çok sınıf oluşturabiliriz.Yalnız dikkat etmelisiniz bu bir Kalıtım değildir.Bunu sınıfları modül yapısına soktuğunuda söyleyebiliriz.

 Nesneleri nasıl oluşturabiliyoruz bakalım.

 
CompanyModule module = new CompanyModule();
CompanyModule.Marketing markt = new CompanyModule.Marketing();
CompanyModule.Product prodct = new CompanyModule.Product();
CompanyModule.Sale sale = new CompanyModule.Sale();

 

Bu yazımdan da bu kadar.Umarım anlatabilmişimdir.

İyi çalışmalar

Kaynak Dosyayı İndirin

Alıntı

Detay [..]

OOP #1 Class,Object,Method,Access Modifier

 Merhaba arkadaşlar

Bayramı ağırladığımız şu günlerde bir yazı serisine başlamak niyetiyle satırlarıma başlıyorum.Bu yazı dizisi Yazılım geliştirme dünyasında önemli bir yere sahip olan Nesne yönelimli programlama (Object Oriented Programming) hakkında olacak.Amacım OOP yaklaşımı gerekli ince nüansları unutmayarak, genel hatlarıyla ele almaktır.Anlatım şeklimi kitabi bilgiden ziyade pratik bilgiler vererek yapmayı planlıyorum.

Nesne yönelimli programlama;  kelime itibariyle baktığınızda zaten kendisini ele veriyor.Dünyadaki her türlü eşya veya maddenin nesnelerle tanımlandığı bir yaklaşım.Bu yazdığımız kodun diğer yaklaşımlara nazaran (prosedürel yaklaşım...) daha fazla dünyaya yakın ve anlaşılabilir kodlar yazmamıza olanak sağlar.

Bu yaklaşımda nesneler herşeydir ve her Object(nesne) Class(sınıf) lardan oluşur.Bir tek sınıftan istenildiği kadar nesne oluşturulması mümkündür.BU oluşturduğunuz her bir nesne farklı farklı veriler ve sonuçlar size döndürebilir.C# tamamiyle OOP bir programlama dilidir.

Bir sınıf içerisinde o sınıfı ilgilendiren çeşitli elemanlar yer alır.Bunlar alanlar(field),methodlar,özellikler(properties) ve olaylardır(events).Sınıf içerisinde geliştiricinin tanımladığı methodlardan farklı olarak her sınıfa özel methodlarda vardır.Constructer(yapıcı) ve Destructer(yıkıcı) methodlardır.Constructer method sınıfın örneğini oluşturduğumuz andaki çalışacak methoddur.Bu method sınıfa ait örnek bir nesne oluşturduğumuz zaman gerekli işlemleri yapmak için kullanılır.Örneğin; veritabanı işlemlerini yaptığımız bir sınıfımız var.Sınıfın içerisinde CRUD işlemlerini yaptığımız methodlar yer alıyor.Bu methodları kullanabilmek için gerekli bağlantı cümlemizi constructer method da belirtmek , tek tek methodların içerisinde belirlemekten daha mantıklı ve profesyonel olur.Deconstructer method ise Dispose olduğu zaman çalışacak methoddur. Burada sınıf içerisinde kullandığımız başka nesneleri hafızadan atmak için clear, dispose gibi işlemleri yapabiliriz.

NOT: Sınıf içerinde constructer methodu oluşturmak için ‘ctor’ code snippet ını kullanabilirisiniz.Deconstructer için ise ‘~’ kullanabilirsiniz.uygulamak için iki kere tab tuşuna baslamayı unutmayın sakın :)

Şimdi anlatmaya çalıştığım konuları pratikte görelim.Aşağıdaki kodları inceleyiniz.

 
public class ExampleClass
{  
     // bir sınıf için temel elemanları barındırıyor. 
     // Constructer Method
     public ExampleClass()
     {
 
      }
 
      // Destructer method
      ~ExampleClass()
      {
 
      
}

Sınıf içerisindeki diğer elemanları buradan inceleyebilirisiniz.

 
// Fields
public int i = 0;
private char c = 'c';
protected string s = "blog.yemrekeskin.com";
internal double d = 1.2;
protected internal bool b = true;
 
// Constant value
public const string key = "asflkj2345nl34lknfvwev567ıot";
 
 private int x;
// Property
public int X
{
    get { return x; }
    set { x = value; }
}

Rastegele tanımlanmış methodlar;

 
private void GetValue()
{
     // void geri dönüş değerinin olmadığını belirtir.
}
 
protected string GetString(string sItem)
{
      return sItem;
}

Şimdi Erişim belirleyicilerinden söz edelim.Erişim belirleyiciler(Access Modifier) sınıfların,methodların,alanların erişim seviyelerinin belirtilmesi için kullanılan anahtar kelimelerdir.Her zaman yazdığımız kod methodların alanların sınırsız erişim sağlamasını istemeyebiliriz.Bazen yazdığımız kodlar hayati işlemler yapıyorsa bunları sadece kendimizin geğiştirmesini daha doğru buluruz.Bu anlamda önemli bir yere sahiptir.Sıralayacak olursak;

Public; Bu şekilde belirtilen method, alan veya sınıflar sınırsız erişime sahiplerdir.Her yerden erişime sahiplerdir.Bu farklı bir proje bile olsa.

Private;Sadece tanımlı oldukları yerden erişime açıktırlar.Yani sınıf içerisinde tanımlandı ise sadece sınıf içerisinde erişebilirisinz.Dışarıdan erişime izin vermez.Nesne oluşturduğunuzda izin vermez.

Protected;Belirtiğiniz yerde ve bunun kalıtıldığı sınıflar içerisinde erişime izin verir.Yani kalıtım yoluyla erişim seviyesi aktarılıyor.

Internal; kelime itibariyle zaten dahili anlamına gelen internal,sadece belirtilen Assembly içerinde yani aynı proje içerisinde erişime izin verir.

Protected Internal;Bu erişim düzenleyicisi ise protected ve internal ın sahip oluğu özelliklere sahip hem protected hemde internal gibi davranır.

Hazırladığım class diagramda da gördüğünüz gibi her belirtilen elemanlar için farklı bir icon seti ve renk kullanılmış.Hatta erişim seviyelerine göre bu iconların kenarına çeşitli şekillerle simgelenmiş.Bunları bilmek mimarisel olarak da bir projeyi incelemeyi kolaylaştıracaktır.

NOT: Eğer bir elemanın erişim belirleyicisini belirlemezseniz private olarak tanımlanacaktır.Bir başka konuda; constructer method public olarak tanımlanmak zorundadır.Aksi halde instance ini oluşturamazsınız.

Bir class dan nasıl nesneler oluşturabileceğimizi kısace değinelim.Bu olay internette okuduğunuz yazılarda çeşitli biçimlerde isimlendirilmekte.Instance,örneğini,tanımlamak,nesne oluşturmak olarak belirtilmektedir.Hepside aynı şeyi ifade eder.Nesne oluştururken NEW anahtar kelimesini kullnarak yaparız.

 
CompanyModule module = new CompanyModule();

Serimizin ilk yazısının sonuna geldik Umarım faydalı oluyordur.Geri bildirimlerinizi bekliyorum.

Bol kodlu günler

Kaynak Dosyayı İndirin

Alıntı

Detay [..]

FileUpload ile Yüklenen Dosyaları Veritabanında Saklamak

FileUpload kontrolünün temel olarak istemciden aldığımız dosyaları sunucunun fiziksel bir konumuna kaydetmek için kullanırız. Fakat bazı durumlarda istemciden alınan bir dosyanın sunucuda güvenli şekilde saklanması için veritabanında saklama yoluna da gidebiliriz. Bu yazımda ASP.NET sunucu kontrollerinden olan FileUpload ile istemciden aldığımız bir dosyayı sunucudaki SQL Server gibi bir veritabanında nasıl saklayabileceğimizi inceleyeceğiz.

İlk olarak dosya bilgilerini saklayacağımız bir tablo oluşturuyoruz.

Tablomuzda resmin adını, binary formatta dosya içeriğini ve dosyanın MIME type bilgisini saklayacağız. FileUpload kontrolünün üç farklı özelliği bize dosyanın bu bilgilerini getirecektir. Bu özelikler ve açıklamaları aşağıdadır:

FileName: Yüklenen dosyanın adı
FileBytes: Dosyanın binary formatta içeriği (byte dizisi olarak getirilir)
PostedFile.ContentType: Dosyanın MIME type bilgisi (MIME dosyanın formatını belirleyen bir isim standartıdır)

Artık sayfamızı tasarlayıp, gerekli kodlarımızı oluşturabiliriz.

<form id="form1" runat="server">

    Yüklenecek dosyayı seçiniz:<br />

    <asp:FileUpload ID="FileUpload1" runat="server" /> &nbsp;<asp:Button

        ID="Button1" runat="server" Text="Dosyayı Yükle" onclick="Button1_Click" />

    <br />

    <br />

    <asp:Label ID="lblMesaj" runat="server" ForeColor="Red"></asp:Label>

</form>


Default.aspx.cs

public partial class _Default : System.Web.UI.Page

{

    protected void Button1_Click(object sender, EventArgs e)

    {

        if(FileUpload1.FileContent != null)

        {

            string dosyaAdi = FileUpload1.FileName; //Dosyanın adı

            byte[] dosyaIcerik = FileUpload1.FileBytes; //Dosyanın bilgilerini binary formatta getirir

            string dosyaTipi = FileUpload1.PostedFile.ContentType; //Dosyanın MIME Type bilgisini getirir

            SqlConnection con = new SqlConnection("data source=localhost; initial catalog=Test; integrated security=true");

            SqlCommand cmd = new SqlCommand("Insert Into Dosyalar Values(@dosya_isim, @dosya_icerik, @dosya_tip)", con);

            cmd.Parameters.AddWithValue("@dosya_isim", dosyaAdi);

            cmd.Parameters.AddWithValue("@dosya_icerik", dosyaIcerik);

            cmd.Parameters.AddWithValue("@dosya_tip", dosyaTipi);

            con.Open();

            if (cmd.ExecuteNonQuery() > 0)

                lblMesaj.Text = "Dosya başarıyla yüklendi";

            con.Close();

        }

    }

}

Görüldüğü gibi SQL Server'da hazırladığımız Dosyalar adındaki tablo için yazılan bir INSERT cümlesine parametre olarak eklenen dosya bilgileri bu şekilde tablomuza eklenebiliyor. Birkaç kayıt ekledikten sonra tablomuzun içeriğini Management Studio gibi bir araçtan kontrol edecek olursak aşağıdaki gibi bir görüntüyle karşılaşırız.

Resimleri başarıyla kaydettik, peki okuma işlemi nasıl gerçekleşecek? Okuma işlemi için ise tablomuzdaki kayıtları SELECT sorgusu ile okumamız gerekecek. Eğer Windows uygulamasında çalışıyor olsaydık DosyaIcerik kolonundan okunan kaydı System.Drawing.Image tipine çevirip Image gibi bir kontrolde görüntüleyebiliriz. Ancak web uygulamalarında bir resmi istemci tarafına taşımamızın yolu biraz daha farklı olacaktır. Resmin içeriği ancak istemciye yollanan cevabın(Response) içerisine yazdırılarak gönderilebilir. Dosyayı istemciye gönderirken dikkat edilmesi gereken hususlardan birisi dosyanın tarayıcıda görüntülenip görüntülenmeyeceğidir. Zira jpg, gif, xml, txt gibi dokumanlar web tarayıcısında görüntülenebilir dosyalarken, zip, exe, dll gibi dosyalar ise tarayıcıda görüntülenemez, ancak yüklenebilir dosyalardır. Aşağıdaki kod parçasında tasarladığımız bir sayfanın kullanıcıya veritabanındaki bir dosyanın nasıl iletilebileceği görülmektedir.

Bu arada, dosyaya yapılan talep QueryString üzerinden resmin DosyaId kolonundaki değer ile iletilmektedir. Yine talebin daha hızlı cevaplanması için Web Form(.aspx) dosyası yerine Generic Handler(.ashx) dosyası kullanmak daha faydalı olacaktır.

ResimGoruntule.ashx

...

using System.Data.SqlClient;

public class ResimGoruntule : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

        string id = context.Request.QueryString["id"];

        byte[] dosyaIcerik = null;

        string dosyaTipi = String.Empty;

        SqlConnection con = new SqlConnection("data source=localhost; initial catalog=Test; integrated security=true");

        SqlCommand cmd = new SqlCommand("Select * From Dosyalar Where DosyaId=@id", con);

        cmd.Parameters.AddWithValue("@id", id);

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())

        {

            dosyaIcerik = (byte[])dr["DosyaIcerik"];

            dosyaTipi = dr["DosyaTip"].ToString();

        }

        con.Close();

        //context.Response.AddHeader("content-disposition", "attachment; filename=" + dosyaAdi + ";"); //Download edilecek dosyanın adı belirleniyor. Bu satırın yorum durumu kaldırılırsa tüm dosyalar download işlemine zorlanacaktır.

        context.Response.ContentType = dosyaTipi; //Gönderilen dosyanın tipi belirtiliyor

        context.Response.BinaryWrite(dosyaIcerik); //Gönderilen cevabın içeriği dosyanın binary formattaki bilgileri olacaktır

    }

    public bool IsReusable {

        get {

            return false;

        }

    }

}

Görüldüğü gibi Response nesnesinin BinaryWrite metodu byte dizisi olarak saklanan dosya içeriğini istemciye göndermektedir. Yine dosyanın tarayıcı tarafından tanınmasını ve işlemin sağlıklı şekilde tamamlanması için ContentType özelliğini de resmin MIME type değeri olarak belirliyoruz. Eğer resmin istemci tarafından download edilmesini istiyorsak kod içerisinde yorum satırı olarak bulunan ve AddHeader metodu ile sayfaya eklenen başlık bilgilerinin bulunduğu satırı normal hale getirmek gerekecektir.

Alıntı
Detay [..]

Web.Config Authentication

Web uygulamalarında üyelik sistemine ait veriler veritabanlarında saklanmaktadır. Tabi ki bu bilgilerin bir web servisinden veya metin tabanlı dosyadan getirilmesi gibi istisnai durumlarda olabilir. ASP.NET uygulaması geliştirirken bu istisnai durumlardan biri de üyelik bilgilerinin web.config'de saklanmasıdır.

"web.config dosyasında kullanıcı adı ve şifre bilgilerini saklamanın mantığı ne ola ki?" sorusu akla gelebilir. Geliştirdiğimiz uygulamada sadece birkaç tane kullanıcımız varsa, bu kullanıcılarla ilgili çok detaylı bilgiler saklama ihtiyacımız yoksa, veritabanında kullanıcılar için tablolar açmak, select, insert vb. işlemler için sorgular yazmak istemeyebiliriz. Bu tip bir durumda aslında web.config dosyası ve FormsAuthentication mekanizması işimizi oldukça kolaylaştırıyor.

Basit bir örnekle web.config dosyası üzerinden authentication işlemlerini nasıl yönetebileceğimizi inceleyelim. web.config dosyasında system.web > authentication > forms > credentials elementi altına <user> elementleri ile tanımlayacağımız kullanıcı bilgileri aşağıdaki kod parçasında görülmektedir.

web.config
  <system.web>
    <authentication mode="Windows">
      <forms>
        <credentials passwordFormat="Clear">
          <user name="arda" password="12345"/>
          <user name="semih" password="123qwe"/>
        </credentials>
      </forms>
    </authentication>
  </system.web>

<credentials> elementi içerisindeki passwordFormat bilgisi kullanıcılar için tanımlanan şifrenin hangi formatta saklanacağını belirliyor. Kullanabileceğimiz formatlar Clear, MD5, SHA1. Burada Clear kullandık, yani şifreler aynen yazıldığı gibi olacak, herhangi bir hashleme yöntemi yok. Eğer kullanıcının şifresini MD5 veya SHA1 formatıyla hashlersek, hashlenmiş şifre metnini <user> elementi içerisindeki password niteliğine atamamız gerekiyor. web.config dosyasının başkaları tarafından görüntülenmesi ve kullanıcıya ait şifrenin öğrenilmesini istemiyorsak tabi ki MD5 veya SHA1 kullanmalıyız. Bir metnin MD5 veya SHA1 formatındaki değerini elde etmek için FormsAuthentication.HashPasswordForStoringInConfigFile metodunu kullanabilirsiniz.

Kullanıcıların doğrulanması için ise FormsAuthentication sınıfına ait Authenticate metodunu kullanmamız gerekiyor. Bu metot kullanıcı adı ve şifresi bilgilerini alarak, web.config'de yer alan bilgilerle karşılaştırma yapıyor ve bilgiler doğru ise boolean tipinden true, değilse false değeri döndürüyor. Aşağıdaki örnek kodlarla böyle bir kontrolü gerçekleştirebiliriz.

Login.aspx
public partial class Login : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (FormsAuthentication.Authenticate(txtUsername.Text, txtPassword.Text))
            FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, false);
        else
            Response.Write("Hatalı kullanıcı adı veya şifre");
    }
}

Son bir uyarı; web.config dosyasının güncellenmesi uygulamanın restart edilmesine sebep olmaktadır. Bu nedenle, özellikle canlı ortamlarda <user> elementi içerisindeki kullanıcı bilgilerini sıklıkla değiştirirken uygulamanın yeniden başlatılacağını unutmayın.

Alıntı

Detay [..]

ASP.net ile checkboxdan seçilen kayıtları databaseden silme

Default.aspx
      
        <asp:DataList ID="DataList1" runat="server">
        <ItemTemplate>
          <asp:CheckBox ID="c" runat="server" />
          <asp:Label ID="l" runat="server" Text='<%# Eval("Mail") %>'></asp:Label>
          <asp:Label runat="server" Visible="false" ID="lblid" Text='<%# Eval("ID") %>'></asp:Label>
        </ItemTemplate>
        </asp:DataList>
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Seçilenleri Sil" />
 
Şimdi de kodları aşağıdaki gibi yazalım
(sayfamıza using System.Data.OleDb ve using System.Data name spacelerini  eklemyi untmuyoruz tabi)

Default.aspx.cs

   OleDbConnection bg = new OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=" + HttpContext.Current.Server.MapPath("~/App_Data/Kobay.mdb"));
     
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            VeriGetir();
        }
    }
 
    private void VeriGetir()
    {
        bg.Open();
        OleDbCommand cmd = new OleDbCommand("Select * FROM Mail", bg);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        DataTable dt = new DataTable("tbl");
        da.Fill(dt);
        DataList1.DataSource = dt.DefaultView;
        DataList1.DataBind();
        bg.Close();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        ArrayList dizi=new ArrayList();
 
        foreach (DataListItem item in DataList1.Items)
        {
            CheckBox c = (CheckBox)item.FindControl("c");
            if (c.Checked)
            {
                Label lbl = (Label)item.FindControl("lblid");
                dizi.Add(lbl.Text);
            }
        }
 
        for (int i = 0; i < dizi.Count; i++)
        {
                KayitSil(dizi[i].ToString());
        }
        VeriGetir();
 
         
    }
 
    private void KayitSil(string p)
    {
       int id = Int32.Parse(p);
 
       bg.Open();
       OleDbCommand cmd = new OleDbCommand("delete FROM Mail Where ID=" + id + " ", bg);
       cmd.ExecuteNonQuery();
       bg.Close();
    }
 
Alıntı
Detay [..]

datalist DataKeys[]

    protected void DL_URUNLER_EditCommand(object source, DataListCommandEventArgs e)
    {
        string id = DL_URUNLER.DataKeys[e.Item.ItemIndex].ToString();
        DBIslem.ParametreliDt("DELETE TBL_URUNLER WHERE ID=@Deger", id);
    }

<asp:DataList ID="DL_URUNLER" runat="server" Width="100%" oneditcommand="DL_URUNLER_EditCommand" DataKeyField="ID">

Detay [..]

web.config - connectionStrings

  <connectionStrings>

    <add name="Baglan_DB" connectionString="Data Source=192.168.100.203;Initial Catalog=ABC_DB;User ID=ADMIN;Password=123123; Language=Turkish; Pooling=true" providerName="System.Data.SqlClient"/>

    <!--<add name="Baglan_DB" connectionString="Data Source=(local);Initial Catalog=ABC_DB;Integrated Security=True" providerName="System.Data.SqlClient" />-->

  </connectionStrings>

  <system.web>

 

Detay [..]

SqlCommand INSERT - UPDATE

        SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString());

        Baglanti.Open();

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = Baglanti;

 

        string ID = "0"; 

        if (String.IsNullOrEmpty(Request.QueryString["ID"]))
        {

            cmd.CommandText = "INSERT INTO FotoGaleriGruplari "

                        + " (UstGrupID, GrupAdi, SiraNo) "

                        + " VALUES "

                        + " (@UstGrupID, @GrupAdi, @SiraNo) "

                        + " SELECT @@IDENTITY ";

            cmd.Parameters.AddWithValue("@UstGrupID", txtGrupID.SelectedValue);

            cmd.Parameters.AddWithValue("@GrupAdi", txtGrupAdi.Text);

            cmd.Parameters.AddWithValue("@SiraNo", txtSiraNo.Text);

            ID = cmd.ExecuteScalar().ToString(); 

        }
        else
        {

            cmd.CommandText = "UPDATE FotoGaleriGruplari SET "

                            + " UstGrupID=@UstGrupID, GrupAdi=@GrupAdi, SiraNo=@SiraNo "

                            + " WHERE ID=@ID";

            cmd.Parameters.AddWithValue("@UstGrupID", txtGrupID.SelectedValue);

            cmd.Parameters.AddWithValue("@GrupAdi", txtGrupAdi.Text);

            cmd.Parameters.AddWithValue("@SiraNo", txtSiraNo.Text);

            cmd.Parameters.AddWithValue("@ID", Request.QueryString["ID"]);

            cmd.ExecuteNonQuery();

            ID = Request.QueryString["ID"]; 

        }       

        cmd.Dispose();

        Baglanti.Close(); 

        Response.Redirect("Foto_Default.aspx?kid=" + txtGrupID.SelectedValue);

Detay [..]
 
Görüntülenen Sonuçlar 11 ile 20 arası ( Toplam Kayıt 74)
Sayfa: 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8  « Geri · İleri »
 


Şairin de dediği gibi; 'programcı' adama hazır blog yakışmazdı.

Ürfet Demirtaş (2010) C#.Net