Anasayfa / Yazılım / ASP.NET / ASP.NET Kayıt Otomasyon Örneği ? 6

ASP.NET Kayıt Otomasyon Örneği ? 6

Bu yazıyı okumadan önce okumadı iseniz aşağıdaki yazıyı okuyunuz.

ASP.NET Kayıt Otomasyon Örneği ? 5

Uygulamamızı geliştirmeye devam ediyorum. Şimdi Öğretmen ekle kısmını yapacağım, aslında bu kısım daha önce öğrenci ekle kısmında yaptığımızla aynı mantık. Dolayısı ile bir nevi tekrar gibi olacak. Öğretmen eklemek için multiview kontrolüm içindeki view3 yani OgretmenEkle View’ini kullanacağım. Bu alana 4 sütun 6 satırdan oluşan bir table ekliyorum. Bu table içinde iki adet textbox kontrolüm, iki adet required validator kontrolüm, bir adet buton kontrolüm, bir adet listbox kontrolüm, bir adet label kontrolüm ve bir adette linkbutton kontrolüm olacak. Tasarımım aşağıdaki gibi yani :

Aşağıdaki kodlarda tasarımımızın şu ana kadarki olan tüm kodları :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="YoneticiPaneli.aspx.cs" Inherits="YoneticiPaneli" %>





    Yönetici Paneli
    


    
Hoşgeldin  Çıkış
Öğrenci Adı :
Öğrenci Soyadı :
     
     
    Öğrencileri Listele  
   
Öğrenci Listesi :
Öğrencileri Listele
Öğretmen Adı :
Öğretmen Soyadı :
     
     
    Öğretmenleri Listele  
     

Tasarımımızı gerçekleştirdik, şimdi artık kod yazmaya başlayabiliriz. Kullanıcı menüden Öğretmen Ekle dediğinde OgretmenEkle view alanı görüntülenecek. Bu alan içinde kullanıcı textboxlara öğretmen ad ve soyad bilgisini girdikten sonra Kaydet butonuna basınca veriyi kaydetmemiz gerekiyor. Biz uygulamamızda database kullanmadığımız için öğrencileri kaydettiğimiz gibi öğretmenleri de bir text dokümanına kaydedeceğiz. Bunun için solution explorer alanında projeme sağ tıklıyor ve Add New Item diyerek projeme bir adet text file ekliyorum, adını ben ogretmenler.txt yapıyorum. Şu anda içeriği boş, dosyayı kapatıyorum.

YoneticiPaneli.aspx dosyama geri dönüyorum ve design alanında ogretmenEkle view alanında yer alan Kaydet butonuna çift tıklıyorum ve butonumuzun click eventini oluşturuyorum. Burada aşağıdaki kodları yazıyorum.

 protected void btnOgretmenKaydet_Click(object sender, EventArgs e)
    {
        //hata durumunu dikkate alarak işlem yapıyorum, eğer hata yoksa try yapım içindeki kodlar çalışıyor
        try
        {

            //Dosyaya veri kaydedeceğim için FileStream classımdan instance almış olduğum fs nesnemin
            //FileMode özelliği veri eklemek için Append ve erişim özelliği ise Write konumundadır.
            FileStream fs = new FileStream(Server.MapPath("ogretmenler.txt"), FileMode.Append, FileAccess.Write);
            //fs nesnemi StreamWriter classımdan türettiğim sw nesnesine bağlıyorum
            StreamWriter sw = new StreamWriter(fs);
            //textboxlardan aldığım veriyi string toplama işlemi ile aralarına boşluk ekleyerek alıyorum.
            sw.WriteLine(txtOgretmenAdi.Text + " " + txtOgretmenSoyadi.Text);
            //FileStream ve StreamWriter nesnelerimi kapatıyorum.
            sw.Close();
            fs.Close();
            //kayıt işleminin tamamlandığını label kontrolümde belirtiyoryum
            lblMesaj2.Text = "Kayıt işlemi tamamlanmıştır!";
            //kayıt işlemlerinin ardından textbox içeriklerini boşaltıyorum ve OgretmenAdi textbox'a imlecimi konumlandırıyorum
            txtOgretmenAdi.Text = "";
            txtOgretmenSoyadi.Text = "";
            txtOgretmenAdi.Focus();
        }
        //eğer hata varsa uyarı veriyorum.
        catch (Exception ex)
        {
           lblMesaj2.Text = "Bir hata oluştu!!! " + ex.Message;
        }
    }

Evet kayıt işlemimizi bu şekilde yaptırabiliyoruz. Şimdi birde Öğretmenleri Listbox?da listeleyelim. Bunun için web formumun üzerinde lnkbtnOgretmenleriListele linkbutton kontrolü üzerinde çift tıklıyorum içeriğine öğretmenleri listeleyecek kodu yazacağım ancak bunu ben bir metot ile yapacağım. Çünkü daha sonra öğretmen silme işleminden sonra da ben öğretmen listeleme yapacağım iki kere aynı işlemleri tekrar etmektense tek metotla bunu halledebiliriz. Dolayısı ile öncelikle bir metot oluşturuyorum :

void OgretmenleriListele()
    {
        //Dosyadan veri okuyacağım işçin FileStream classından aldığım fs instance FileMode özelliği open
        //ve erişim özelliği ise Read oluyor. Daha sonra StreamReader classımdan sr nesnesi oluşturup, fs'yi bağlıyorum
        FileStream fs = new FileStream(Server.MapPath("ogretmenler.txt"), FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(fs);
        //Daha önce listeleme olmuş olasılığını düşünerek listbox içeriğini ilk anda siliyorum
        lbOgretmenListesi.Items.Clear();
        //txt dokümanım içeriğinde yer alan verilerin toplam satırı kadar dönmesi için while döngüsü kullanıyorum
        //satırlar bitince -1 değeri gelir.
        while (sr.Peek() != -1)
        {
            //gelen satırlardaki verileri ogrenciler değişkenine alıyorum
            string ogretmenler = sr.ReadLine();
            //her bir veriyi listboxa ekliyorum
            lbOgretmenListesi.Items.Add(ogretmenler);
        }
        //döngüm sonlanınca, yani tüm satırlar bitince fs ve sr nesnemi kapatıyorum.
        sr.Close();
        fs.Close();
    }

Daha sonra OgretmenleriListele linkbutton kontrolü üzerinde çift tıklıyorum içeriğine aşağıdaki kodu yazıyorum :

protected void lnkbtnOgretmenleriListele_Click(object sender, EventArgs e)
    {
        OgretmenleriListele();
    }

Kayıt işlemim aşağıdaki şekilde görüldüğü üzere tamamlanıyor.

Değişiklik yaptığım tüm dosyalar üzerindeki kodları tekrardan paylaşıyorum :

YoneticiPaneli.aspx :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="YoneticiPaneli.aspx.cs" Inherits="YoneticiPaneli" %>





    Yönetici Paneli
    


    
Hoşgeldin  Çıkış
Öğrenci Adı :
Öğrenci Soyadı :
     
     
    Öğrencileri Listele  
   
Öğrenci Listesi :
Öğrencileri Listele
Öğretmen Adı :
Öğretmen Soyadı :
     
     
    Öğretmenleri Listele  
     

YoneticiPaneli.aspx.cs :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class YoneticiPaneli : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Eğer sayfam daha önce yüklenmedi ise aşağıdaki işlemleri yapacak
        if (!IsPostBack)
        {


            if (Session["Yonetici"] != null)
            {
                lblYoneticiAdi.Text = Session["Yonetici"].ToString();
                OgrencileriListele();
            }
            else
            {
                Response.Redirect("Default.aspx");
            }
        }

    }
    protected void btnOgrenciKaydet_Click(object sender, EventArgs e)
    {
        //hata durumunu dikkate alarak işlem yapıyorum, eğer hata yoksa try yapım içindeki kodlar çalışıyor
        try
        {
            //Dosyaya veri kaydedeceğim için FileStream classımdan instance almış olduğum fs nesnemin
            //FileMode özelliği veri eklemek için Append ve erişim özelliği ise Write konumundadır.
            FileStream fs = new FileStream(Server.MapPath("ogrenciler.txt"), FileMode.Append, FileAccess.Write);
            //fs nesnemi StreamWriter classımdan türettiğim sw nesnesine bağlıyorum
            StreamWriter sw = new StreamWriter(fs);
            //textboxlardan aldığım veriyi string toplama işlemi ile aralarına boşluk ekleyerek alıyorum.
            sw.WriteLine(txtOgrenciAdi.Text + " " + txtOgrenciSoyadi.Text);
            //FileStream ve StreamWriter nesnelerimi kapatıyorum.
            sw.Close();
            fs.Close();
            //kayıt işleminin tamamlandığını label kontrolümde belirtiyoryum
            lblMesaj.Text = "Kayıt işlemi tamamlanmıştır!";
            //kayıt işlemlerinin ardından textbox içeriklerini boşaltıyorum ve OgrenciAdi textbox'a imlecimi konumlandırıyorum
            txtOgrenciAdi.Text = "";
            txtOgrenciSoyadi.Text = "";
            txtOgrenciAdi.Focus();

        }
            //eğer hata varsa uyarı veriyorum.
        catch (Exception ex)
        {            
            lblMesaj.Text = "Bir hata oluştu!!! " + ex.Message;
        }
    }
    protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
    {
        //multiview kontrolümün activeviewindex özelliğini menu kontrolümün seçili item'inde value değerinden alıyorum.
        MultiView1.ActiveViewIndex = Convert.ToInt32(Menu1.SelectedItem.Value);
        
    }
    protected void lnkbtnOgrencileriListele_Click(object sender, EventArgs e)
    {
        OgrencileriListele();
    }

    //OgrencileriListele adında geriye değer döndürmeyen parametresiz bir metot oluşturuyorum
    void OgrencileriListele()
    {
        //Dosyadan veri okuyacağım işçin FileStream classından aldığım fs instance FileMode özelliği open
        //ve erişim özelliği ise Read oluyor. Daha sonra StreamReader classımdan sr nesnesi oluşturup, fs'yi bağlıyorum
        FileStream fs = new FileStream(Server.MapPath("ogrenciler.txt"), FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(fs);
        //Daha önce listeleme olmuş olasılığını düşünerek listbox içeriğini ilk anda siliyorum
        lbOgrenciListesi.Items.Clear();
        lbOgrenciListesi2.Items.Clear();
        //txt dokümanım içeriğinde yer alan verilerin toplam satırı kadar dönmesi için while döngüsü kullanıyorum
        //satırlar bitince -1 değeri gelir.
        while (sr.Peek() != -1)
        {
            //gelen satırlardaki verileri ogrenciler değişkenine alıyorum
            string ogrenciler = sr.ReadLine();
            //her bir veriyi listboxa ekliyorum
            lbOgrenciListesi.Items.Add(ogrenciler);
            lbOgrenciListesi2.Items.Add(ogrenciler);
        }
        //döngüm sonlanınca, yani tüm satırlar bitince fs ve sr nesnemi kapatıyorum.
        sr.Close();
        fs.Close();
    }
    protected void btnOgrenciSil_Click(object sender, EventArgs e)
    {
        //hata yoksa try içindeki işlemler yapılır
        try
        {
            //listboxdan herhangi bir öğe seçilimi dğeilmi kontrol ediyorum seçili ise bir index no vardır
            //if içindeki işlemler yapılır
            if (lbOgrenciListesi2.SelectedIndex >= 0)
            {
                //seçili öğeyi listboxdan sildim.
                lbOgrenciListesi2.Items.RemoveAt(lbOgrenciListesi2.SelectedIndex);
            }
            //listboxdan silme işlemi yapıldı bilgilendirme yapıyorum.
            lblMesajSilme.Text = "Silme işlemi gerçekleştirildi!";
            //listboxdan sildim ancak, aslında henüz dosyadan silmedim. Dolayısı ile FileStream classı ile
            //nesnelerimi oluşturup silme işlemi yapmam gerekiyor. Öncelikle doküman içeriğini tamamen boşaltıyorum
            //bu işlemi filemode türü Truncate seçerek yapıyorum. bunun için FileStream classından bir fs instance aldım
            FileStream fsSil = new FileStream(Server.MapPath("ogrenciler.txt"), FileMode.Truncate);
            //fs instance kapatıyorum
            fsSil.Close();
            //şimdi içeriğini boşalttığım doküman içeriğini listboxda kalan diğer veriler ile doldurmam gerek
            //bunun için tekrar fileStram classımdan bir instance alıyorum adını fskaydet verdim.
            //FileMode ekleme yapacağım için Append oluyor yazma işlemi içinde FileAccess write olacak.
            FileStream fsKaydet = new FileStream(Server.MapPath("ogrenciler.txt"), FileMode.Append, FileAccess.Write);
            //StreamWriter classımdan instance alıyorum ve fs nesnemi bağlıyorum
            StreamWriter sw = new StreamWriter(fsKaydet);
            //Listbox içindeki öğelerin sayısı kadar bir for döngüsü oluşturuyorum
            for (int i = 0; i < lbOgrenciListesi2.Items.Count; i++)
            {
                //her bir öğeyi sw nesnesi ile yazdırıyorum.
                sw.WriteLine(lbOgrenciListesi2.Items[i].Text);
            }
            //oluşturduğum nesneleri kapatıyorum.
            sw.Close();
            fsKaydet.Close();
            //tekrar listbox içinde listeliyorum.
            OgrencileriListele();

        }
            //hata olursa mesajla kullanıcıyı bilgilendiriyorum
        catch (Exception ex)
        {
            lblMesajSilme.Text = "Sistem hatası, işlem gerçekleştirilemedi! " + ex.Message;
        }
    }
    protected void lnkbtnOgrencileriListele2_Click(object sender, EventArgs e)
    {
        OgrencileriListele();
    }
    protected void btnOgretmenKaydet_Click(object sender, EventArgs e)
    {
        //hata durumunu dikkate alarak işlem yapıyorum, eğer hata yoksa try yapım içindeki kodlar çalışıyor
        try
        {

            //Dosyaya veri kaydedeceğim için FileStream classımdan instance almış olduğum fs nesnemin
            //FileMode özelliği veri eklemek için Append ve erişim özelliği ise Write konumundadır.
            FileStream fs = new FileStream(Server.MapPath("ogretmenler.txt"), FileMode.Append, FileAccess.Write);
            //fs nesnemi StreamWriter classımdan türettiğim sw nesnesine bağlıyorum
            StreamWriter sw = new StreamWriter(fs);
            //textboxlardan aldığım veriyi string toplama işlemi ile aralarına boşluk ekleyerek alıyorum.
            sw.WriteLine(txtOgretmenAdi.Text + " " + txtOgretmenSoyadi.Text);
            //FileStream ve StreamWriter nesnelerimi kapatıyorum.
            sw.Close();
            fs.Close();
            //kayıt işleminin tamamlandığını label kontrolümde belirtiyoryum
            lblMesaj2.Text = "Kayıt işlemi tamamlanmıştır!";
            //kayıt işlemlerinin ardından textbox içeriklerini boşaltıyorum ve OgretmenAdi textbox'a imlecimi konumlandırıyorum
            txtOgretmenAdi.Text = "";
            txtOgretmenSoyadi.Text = "";
            txtOgretmenAdi.Focus();
        }
        //eğer hata varsa uyarı veriyorum.
        catch (Exception ex)
        {
           lblMesaj2.Text = "Bir hata oluştu!!! " + ex.Message;
        }
    }

    void OgretmenleriListele()
    {
        //Dosyadan veri okuyacağım işçin FileStream classından aldığım fs instance FileMode özelliği open
        //ve erişim özelliği ise Read oluyor. Daha sonra StreamReader classımdan sr nesnesi oluşturup, fs'yi bağlıyorum
        FileStream fs = new FileStream(Server.MapPath("ogretmenler.txt"), FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(fs);
        //Daha önce listeleme olmuş olasılığını düşünerek listbox içeriğini ilk anda siliyorum
        lbOgretmenListesi.Items.Clear();
        //txt dokümanım içeriğinde yer alan verilerin toplam satırı kadar dönmesi için while döngüsü kullanıyorum
        //satırlar bitince -1 değeri gelir.
        while (sr.Peek() != -1)
        {
            //gelen satırlardaki verileri ogretmenler değişkenine alıyorum
            string ogretmenler = sr.ReadLine();
            //her bir veriyi listboxa ekliyorum
            lbOgretmenListesi.Items.Add(ogretmenler);
        }
        //döngüm sonlanınca, yani tüm satırlar bitince fs ve sr nesnemi kapatıyorum.
        sr.Close();
        fs.Close();
    }
    protected void lnkbtnOgretmenleriListele_Click(object sender, EventArgs e)
    {
        OgretmenleriListele();
    }
}

Uygulamamızın şu ana kadar olan kısmını aşağıdaki linkten indirebilirsiniz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir