Asp.Net DataList Kullanımı Detaylı Anlatım

Hiç yorum yok
Merhaba Arakadaşlar,


Bu bölümde Asp.Net üzerindeki container yapılarından ilk örneğimiz olan DataList kullanımına bkaıyor olacağız.Öncelikle container nedir buna kısaca değinelim.İçersinde birden fazla toolbox elemanı olan (textbox,label,linkbutton vs) ve bunlara direk ıdlerini vererek erişim sağlayamadığımız,containerimiz içinde
belli bir arama işlemine tabi tutularak yakalayabildiğimiz yapılardır.Şimdi söylediklerimizi bir örnekle açıklıyor olalım.Default.aspx sayfamızın source bölümünü aşağıdaki gibi düzenleyelim

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DataListKullanimi.Default" %>
 
<!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></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:DataList ID="DataList1" runat="server" CellPadding="4" 
            DataKeyField="KategoriID" DataSourceID="SqlDataSource1" 
            RepeatColumns="3" ForeColor="#333333" 
            onitemcommand="DataList1_ItemCommand">
            <AlternatingItemStyle BackColor="White" ForeColor="#284775" />
            <EditItemTemplate>
               Aciklama : <asp:TextBox ID="txtAciklama" runat="server"></asp:TextBox><br />
              KategoriAdi:  <asp:TextBox ID="txtKategoriAdi" runat="server"></asp:TextBox><br />
                <asp:LinkButton ID="lnkGuncelle" runat="server" CommandArgument='<%#Eval("KategoriID") %>' CommandName="update">Guncelle</asp:LinkButton>
                <br />
                <asp:LinkButton ID="lnkVazgec" runat="server" CommandArgument='<%#Eval("KategoriID") %>'  CommandName="cancel">Vazgeç</asp:LinkButton>
            </EditItemTemplate>
            <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <ItemStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <ItemTemplate>
                Aciklama:
                <asp:Label ID="AciklamaLabel" runat="server" Text='<%# Eval("Aciklama") %>' />
                <br />
                KategoriAdi:
                <asp:Label ID="KategoriAdiLabel" runat="server" 
                    Text='<%# Eval("KategoriAdi") %>' />
                <br />
                KategoriID:
                <asp:Label ID="KategoriIDLabel" runat="server" 
                    Text='<%# Eval("KategoriID") %>' />
                <br />
                <asp:LinkButton ID="lnkDuzenle" CommandName="edit" CommandArgument='<%#Eval("KategoriID") %>' runat="server">Düzenle</asp:LinkButton>
                <br />
                <asp:LinkButton ID="lnkSil" CommandName="delete" CommandArgument='<%#Eval("KategoriID") %>'  runat="server">Sil</asp:LinkButton>
            </ItemTemplate>
            <SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        </asp:DataList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConflictDetection="CompareAllValues" 
            ConnectionString="<%$ ConnectionStrings:KuzeyRuzgariConnectionString %>" 
            DeleteCommand="DELETE FROM [Kategoriler] WHERE [KategoriID] = @original_KategoriID AND (([Aciklama] = @original_Aciklama) OR ([Aciklama] IS NULL AND @original_Aciklama IS NULL)) AND [KategoriAdi] = @original_KategoriAdi" 
            InsertCommand="INSERT INTO [Kategoriler] ([Aciklama], [KategoriAdi]) VALUES (@Aciklama, @KategoriAdi)" 
            OldValuesParameterFormatString="original_{0}" 
            SelectCommand="SELECT [Aciklama], [KategoriAdi], [KategoriID] FROM [Kategoriler]" 
            UpdateCommand="UPDATE [Kategoriler] SET [Aciklama] = @Aciklama, [KategoriAdi] = @KategoriAdi WHERE [KategoriID] = @original_KategoriID AND (([Aciklama] = @original_Aciklama) OR ([Aciklama] IS NULL AND @original_Aciklama IS NULL)) AND [KategoriAdi] = @original_KategoriAdi">
            <DeleteParameters>
                <asp:Parameter Name="original_KategoriID" Type="Int32" />
                <asp:Parameter Name="original_Aciklama" Type="String" />
                <asp:Parameter Name="original_KategoriAdi" Type="String" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="Aciklama" Type="String" />
                <asp:Parameter Name="KategoriAdi" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="Aciklama" Type="String" />
                <asp:Parameter Name="KategoriAdi" Type="String" />
                <asp:Parameter Name="original_KategoriID" Type="Int32" />
                <asp:Parameter Name="original_Aciklama" Type="String" />
                <asp:Parameter Name="original_KategoriAdi" Type="String" />
            </UpdateParameters>
        </asp:SqlDataSource>
    
    </div>
    </form>
</body>
</html> 
========================================================================
Daha Sonrasında  vermiş olduğumuz SqlDataSource 'mız üzerinde nasıl
yaptık buna bakalım
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
namespace DataListKullanimi
{
    public partial class Default : System.Web.UI.Page
    {
        SqlConnection cnn = new SqlConnection("Server=.;Database=KuzeyRuzgari;trusted_connection=true");
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
        //Propertiesden Verilen CommandNameleri Sil delete Guncelle update,Vazgec cancel 
        //e.item -> Tıklanan Satırı yakalıyor olacak
        // e.CommandName = tıklananın adını verir
        protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            bool sonuc = false;
            if (e.CommandName == "delete")
            {
                sonuc = KategoriSil(Convert.ToInt32(e.CommandArgument));
                if (sonuc)
                {
                    DataList1.DataBind();//Bu Satır Yazılmaşsa hata 
                }
            }
            if (e.CommandName == "edit")
            {
                DataList1.EditItemIndex = e.Item.ItemIndex;// bütün datalist içersinde editlecek satırı bul
                DataList1.DataBind();
            }
            if (e.CommandName == "update")
            {
                TextBox KategoriAdi = (TextBox)e.Item.FindControl("txtKategoriAdi");
                TextBox Aciklama = (TextBox)e.Item.FindControl("txtAciklama");
                sonuc = KategoriGuncelle(Convert.ToInt32(e.CommandArgument),KategoriAdi.Text,Aciklama.Text);
                if (sonuc)
                {
                    DataList1.EditItemIndex = -1;// secileni bırak
                    DataList1.DataBind();
                }
            }
            if (e.CommandName == "cancel")
            {
                DataList1.EditItemIndex = -1;// secileni bırak
                DataList1.DataBind();
            }
        }
 
        private bool KategoriGuncelle(int ID, string kategoriAdi, string aciklama)
        {
            bool sonuc = false;
            SqlCommand cmd = new SqlCommand("UPDATE Kategoriler set KategoriAdi=@KatAdi,Aciklama=@Aciklama where KategoriID=@KatID ", cnn);
            cmd.Parameters.AddWithValue("@KatAdi",kategoriAdi);
            cmd.Parameters.AddWithValue("@Aciklama",aciklama);
            cmd.Parameters.AddWithValue("@KatID",ID);
            try
            {
                if (cnn.State == ConnectionState.Closed)
                    cnn.Open();
                sonuc = Convert.ToBoolean(cmd.ExecuteNonQuery());
            }
            catch (SqlException ex)
            {
                string hata = ex.Message;
            }
            finally
            {
                cnn.Close();
            }
            return sonuc;
        }
 
        private bool KategoriSil(int ID)
        {
            bool sonuc = false;
            SqlCommand cmd = new SqlCommand("Delete From Kategoriler where KategoriID=@KatID", cnn);
            cmd.Parameters.AddWithValue("@KatID", ID);
            try
            {
                if (cnn.State == ConnectionState.Closed)
                {
                    cnn.Open();
                }
                sonuc = Convert.ToBoolean(cmd.ExecuteNonQuery());
            }
            catch (SqlException ex)
            {
                string Hata = ex.Message;
            }
            finally
            {
                cnn.Close();
            }
            return sonuc;
        }
    }
}
Umarım Faydalı olur 


Hiç yorum yok :

Yorum Gönder

Soru Görüş önerileriniz için gmail plus üzerinden + layın müsait olduğumda mutlaka yanıt dönüyor olacağım.