Pazartesi , Eylül 1 2014
SON YAZILAR
Anasayfa / Yazılım / ASP.NET / ASP.NET Kayıt Otomasyon Örneği – 4

ASP.NET Kayıt Otomasyon Örneği – 4

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

ASP.NET Kayıt Otomasyon Örneği – 3

Şimdi uygulamamızda yönetici bu sayfaya ulaştığında ve menü kontrolünden öğrenci ekleye bastığında ne olması gerekiyor bunları gerçekleştirelim. Kullanıcı menü kontrolünde öğrenci ekle dediğinde öogrenciEkle View alanı görüntülenecek. Ben bu alan içinde iki adet textbox kullanacağım, bir adet buton, bir adet linkbutton, bir adet listbox ve bir adette işlemin bilgisini vereceğim label kontrolü kullanacağım.

Tasarımımın görüntüsü aşağıdaki gibi yani :

Tasarımımın kodları ise aşağıdaki gibi oldu :

YoneticiPaneli.aspx :

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Yönetici Paneli</title>
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
        .style4
        {
            font-family: "Courier New", Courier, monospace;
            font-weight: bold;
        }
        .style5
        {
        }
        .style6
        {
            height: 74px;
        }
        .style8
        {
            width: 7px;
        }
        .style9
        {
            width: 7px;
            font-weight: bold;
            font-family: "Courier New", Courier, monospace;
        }
        .style12
        {
            width: 147px;
            font-weight: bold;
            font-family: "Courier New", Courier, monospace;
        }
        .style13
        {
            width: 147px;
        }
        .style14
        {
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <table class="style1">
            <tr>
                <td class="style6">
                    <span class="style4">Hoşgeldin</span>&nbsp;
                    <asp:Label ID="lblYoneticiAdi" runat="server" Font-Bold="True" 
                        Font-Names="Courier New" ForeColor="#CC0000"></asp:Label>
                </td>
                <td class="style6" style="text-align: right">
                    <asp:LinkButton ID="lnkBtnCikis" runat="server" BackColor="#CC0000" 
                        Font-Bold="True" Font-Names="Courier New" Font-Size="Larger" ForeColor="White">Çıkış</asp:LinkButton>
                </td>
            </tr>
            <tr>
                <td class="style5" colspan="2">
                    <asp:Menu ID="Menu1" runat="server" BackColor="#CC0000" BorderColor="#FF3300" 
                        BorderStyle="None" DynamicHorizontalOffset="2" Font-Bold="True" 
                        Font-Names="Courier New" Font-Size="Medium" ForeColor="White" 
                        Orientation="Horizontal" StaticSubMenuIndent="10px">
                        <DynamicHoverStyle BackColor="#7C6F57" ForeColor="White" />
                        <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
                        <DynamicMenuStyle BackColor="#F7F6F3" />
                        <DynamicSelectedStyle BackColor="#5D7B9D" />
                        <Items>
                            <asp:MenuItem Text="Öğrenci Ekle" Value="0"></asp:MenuItem>
                            <asp:MenuItem Text="Öğrenci Sil" Value="1"></asp:MenuItem>
                            <asp:MenuItem Text="Öğretmen Ekle" Value="2"></asp:MenuItem>
                            <asp:MenuItem Text="Öğretmen Sil" Value="3"></asp:MenuItem>
                        </Items>
                        <StaticHoverStyle BackColor="#7C6F57" ForeColor="White" />
                        <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
                        <StaticSelectedStyle BackColor="#5D7B9D" />
                    </asp:Menu>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                </td>
            </tr>
            <tr>
                <td class="style5" colspan="2">
                    <asp:MultiView ID="MultiView1" runat="server">
                        <asp:View ID="OgrenciEkle" runat="server">
                            <table class="style1">
                                <tr>
                                    <td class="style12">
                                        Öğrenci Adı</td>
                                    <td class="style9">
                                        :</td>
                                    <td class="style14">
                                        <asp:TextBox ID="txtOgrenciAdi" runat="server" Font-Bold="True" 
                                            Font-Names="Courier New" ValidationGroup="OgrenciEkle" Width="200px"></asp:TextBox>
                                    </td>
                                    <td>
                                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                                            ControlToValidate="txtOgrenciAdi" ErrorMessage="Öğrenci Adı Boş Geçilemez!" 
                                            Font-Bold="True" Font-Names="Courier New" ForeColor="#CC0000" 
                                            ValidationGroup="OgrenciEkle"></asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="style12">
                                        Öğrenci Soyadı</td>
                                    <td class="style9">
                                        :</td>
                                    <td class="style14">
                                        <asp:TextBox ID="txtOgrenciSoyadi" runat="server" Font-Bold="True" 
                                            Font-Names="Courier New" ValidationGroup="OgrenciEkle" Width="200px"></asp:TextBox>
                                    </td>
                                    <td>
                                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                                            ControlToValidate="txtOgrenciSoyadi" 
                                            ErrorMessage="Öğrenci Soyadı Boş Geçilemez!" Font-Bold="True" 
                                            Font-Names="Courier New" ForeColor="#CC0000" ValidationGroup="OgrenciEkle"></asp:RequiredFieldValidator>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="style13">
                                        &nbsp;</td>
                                    <td class="style8">
                                        &nbsp;</td>
                                    <td class="style14">
                                        <asp:Button ID="btnOgrenciKaydet" runat="server" BackColor="#CC0000" 
                                            BorderStyle="Ridge" Font-Bold="True" Font-Names="Courier New" ForeColor="White" 
                                            onclick="btnOgrenciKaydet_Click" Text="Kaydet" ValidationGroup="OgrenciEkle" 
                                            Width="200px" />
                                    </td>
                                    <td>
                                        &nbsp;</td>
                                </tr>
                                <tr>
                                    <td class="style13">
                                        &nbsp;</td>
                                    <td class="style8">
                                        &nbsp;</td>
                                    <td class="style14">
                                        <asp:Label ID="lblMesaj" runat="server" Font-Bold="True" 
                                            Font-Names="Courier New" ForeColor="#CC0000"></asp:Label>
                                    </td>
                                    <td>
                                        &nbsp;</td>
                                </tr>
                                <tr>
                                    <td class="style13">
                                        &nbsp;</td>
                                    <td class="style8">
                                        &nbsp;</td>
                                    <td class="style14">
                                        <asp:LinkButton ID="lnkbtnOgrencileriListele" runat="server" Font-Bold="True" 
                                            Font-Names="Courier New" ForeColor="#CC0000">Öğrencileri Listele</asp:LinkButton>
                                    </td>
                                    <td>
                                        &nbsp;</td>
                                </tr>
                                <tr>
                                    <td class="style13">
                                        &nbsp;</td>
                                    <td class="style8">
                                        &nbsp;</td>
                                    <td class="style14" colspan="2">
                                        <asp:ListBox ID="lbOgrenciListesi" runat="server" Font-Bold="True" 
                                            Font-Names="Courier New" Height="200px" ValidationGroup="OgrenciEkle" 
                                            Width="300px"></asp:ListBox>
                                    </td>
                                </tr>
                            </table>
                        </asp:View>
                         <asp:View ID="OgrenciSil" runat="server">
                        </asp:View>
                         <asp:View ID="OgretmenEkle" runat="server">
                        </asp:View>
                         <asp:View ID="OgretmenSil" runat="server">
                        </asp:View>
                    </asp:MultiView>
                </td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
</html>

Kullanıcı sayfayı açtığında yani web formumuz ilk yüklendiği anda kullanıcımızın ilk başta göreceği bir view olmalıdır. Aynı zamanda kullanıcı menuden herhangi bir durumu seçtğinde hangi viewin görüntüleneceği de belirlenmelidir. İşte bunu yapabilmek için MultiView kontrolümüzün ActiveViewIndex özelliği kullanılır.

Bunun için sayfamızın design alanına geçeriz ve menümüzün üzerinde çift tıklayıp, MenuItemClick eventinde aşağıdaki kodları yazıyorum.

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

Şimdi gelelim işlemlerimizi yapmaya.. Öncelikle ÖğrenciEkle Viewi içinde yer alan Kaydet butonuna bastığımızda ne yapacağız. Bunu yapalım. Kaydet butonuna bastığımızda bu yer içinde yer alan öğrenci ad ve soyad bilgisini alıp bir txt dokümanına kaydedeceğiz. Bunun için projemizde sağ tıklıyor ve Add New Item deyip bir adet TextFile’i projemize ekliyoruz. Adını da ogrenciler.txt yapıyoruz. Sonra bu dosyayı kapatalım, şu an içeriği boş. Daha sonra YoneticiPaneli.aspx web formumuza dönelim, code behind tarafında namespace alanına System.IO ekleyelim ve sonra design alanına geçip burada OgrenciEkle view içinde yer alan kaydet butonuna çift tıklayıp butonun click eventine girelim. Aşağıdaki kodları yazalım. Kodlarımın açıklamasını da kodların arasında bulabilirsiniz.

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

Evet kayıt işlemimizi bu şekilde yaptırabiliyoruz. Şimdi birde Öğrencileri Listbox’da listeleyelim. Bunun için web formumun üzerinde lnkbtnOgrencileriListele linkbutton kontrolü üzerinde çift tıklıyorum içeriğine öğrencileri listeleyecek kodu yazacağım ancak bunu ben bir metot ile yapacağım. Çünkü daha sonra öğrenci silme işleminden sonra da ben öğrenci listeleme yapacağım iki kere aynı işlemleri tekrar etmektense tek metotla bunu halledebiliriz. Dolayısı ile öncelikle 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();
        //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);
        }
        //döngüm sonlanınca, yani tüm satırlar bitince fs ve sr nesnemi kapatıyorum.
        sr.Close();
        fs.Close();
    }

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

protected void lnkbtnOgrencileriListele_Click(object sender, EventArgs e)
    {
        OgrencileriListele();
    }

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

Aşağıdaki linkten uygulamanın şu ana kadar olan kısmına erişebilirsiniz.

Bir sonraki yazıda da öğrenci silme işlemini gerçekleştireceğiz.

Bir yorum

Add Comment Register



Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>