Asp.Net Veri kontrollerinde Silme işlemi öncesi Onay

by hakan 8. Ekim 2008 12:22

Merhaba arkadaşlar ;

Uzun zamandır bunu ipucu haline getireyim diyordum kısmet buguneymiş. Bu aralar bende zaten bir sıkılma durumu vardır ki anlatamam. Herşey üstüme üstüme geliyor. Yazılımın Y sini bile görmek istemiyorum o kadar sıkıldım. Neyse ki arada günlüğüme yazılar yazarak bir nebze olsun kendimi rahatlatıyorum. Hatırlarsanız bunu daha önceden de Burada sadece örnek kod olarak belirtmiştim.

Uzun lafın kısası diyorum ve eminim ki çoğu kişinin herhangi gibi bir veri kontrolünde silme işlemi yaparken onay alması gerekmektedir. Ki hepimizin karşılaştığı bir gereklilikdir diyebilirim.

Datalist kontrolümüzden başlayacağım. Öncelikle sayfama Asp.Net datalist ve sqldatasource sürükledim ve bıraktım. Gerekli ayarlamaları yaptıktan sonra(sadece verileri listeleyeceğim) bir son görünüşüne bakalım.

Burada basit bir ID sıralama işlemi yaptım şöyle ki SQLDATASOURCE 'umun ConnectionStringini ve SelectCommand'ını belirledim daha sonrada verileri listeleyecek kontrolümde (datalist) DahaSourceID sinide SqlDataSource'e verdiğim ID yi belirledim. ve Itemtemplate içinde ID yi yazdırdım.

        <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
        <ItemTemplate>
            <%#Eval("TopicID") %>
        </ItemTemplate>
        </asp:DataList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:SQL %>"
            ProviderName="<%$ ConnectionStrings:SQL.ProviderName %>"
            SelectCommand="Select * from IDList"></asp:SqlDataSource>

Gördüğünüz gibi bu kısımda herhangi bir farklılık yok. Şimdi TopicID mizin yanına bir tane buton ekleyelim ve CommandName ve CommandArguement özelliğini verelim. Daha sonrada Datalistimizin Itemcommand eventinde bu işlemi yakalayacağız ve gerçekleştireceğiz. Tabi bu arada Sqldatasource mizin DeleteCommand özelliğini vermemiz gerekiyor.

Bu işlemleride gerçekleştirdikten sonra HTML tarafındaki kodlarımız :

        <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1"
            onitemcommand="DataList1_ItemCommand">
        <ItemTemplate>
            <%#Eval("TopicID") %>
            <br />
            <asp:Button ID="BtnSil" runat="server" Text="Sil" CommandName="VeriSil" CommandArgument='<%#Eval("TopicID") %>'/>
        </ItemTemplate>
        </asp:DataList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:SQL %>"
            ProviderName="<%$ ConnectionStrings:SQL.ProviderName %>"
            SelectCommand="Select * from IDList" DeleteCommand="Delete IDList Where TopicID=@TopicID"></asp:SqlDataSource>

ve Kaynak Kod Tarafındaki kodlarımız  (inline yada codebehind yazanlar için farklılık gösterebilir) :

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName == "VeriSil")
        {
            SqlDataSource1.DeleteParameters.Add("TopicID", Convert.ToString(e.CommandArgument));
            SqlDataSource1.Delete();
            SqlDataSource1.DataBind();
        }
    }

Bu hale geldi. Sayfamızı teste açtığımızda görsel olarak sol tarafdakini göreceksiniz. üst tarafda rakamlar ve alt tarafında ise Sil butonunu göreceksiniz. Ve Sil butonuna bastığımız taktirde Eventimiz çalışacak ve VeriSil olan CommandName'e gidecek sonradasında ilgili ID ye eşit olanı silecektir. Buraya kadar bildiğiniz gibi herşey normal.

Onay meselesinde de abartılacak kadar önemli bir şey yok ki bu kadar uzun yazma nedenim sadece onay penceresi için değil diğer türlüde bilmeyen yada öğrenmek isteyen arkadaşlara yardımcı olmaktır.

Datalist içindeki butonumuzun OnClientClick özelliğine : "return window.confirm('Siliyorum bak emin misin?');" yazdığımız taktirde işlem tamamlanacaktır. Şöyle ki butonumuz

<asp:Button ID="BtnSil" runat="server" Text="Sil" CommandName="VeriSil" CommandArgument='<%#Eval("TopicID") %>' OnClientClick="return window.confirm('Siliyorum bak emin misin?');"/>

en son bu hali alacaktır ve sayfamızı yenilediğimiz taktirde ise resimdeki gibi bir uyarı ile karşılaşılacaktır.

Umarım faydalı olmuştur.

Yorumlar

19.11.2008 16:55:49

Selam asp.net 3.5 kullanıyorum.Arka planda vb kodları var.VB tarafında
select ile bir kontrol koymak istiyorum.Fakat başarılı olamadım yardım edebilirmisiniz??

Protected Sub dataTextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles makinanoTextBox.TextChanged
..
SqlDataSource1.SelectParameters.Add("@nMakinaID", makinanoTextBox.Text)
SqlDataSource1.SelectCommand = "select count(*) from [SpMakinaArizaKayit] where [arzbitti] = '0' and [nMakinaID] = @nMakinaID"
..
endsub

select ile datayı aldım fakat ekrana bu seçilen sayıyı nasıl atarım.yada count(*) ifadesinin 0(sıfır) olduğunu nasıl kontrol edebilirim.
if (count(*)= 0) then ..else..endif gibi bir yapı???
teşekkürler

bahadır

19.11.2008 17:12:17

Merhabalar ;

SelectCommand ile değilde kendiniz sqlcommand aracılığı ile neden yapmıyorsunuz?
şöyleki

SqlConnection con = new SqlConnection("baglantin");
SqlCommand cmd = new SqlCommand("select count(*) from [SpMakinaArizaKayit] where [arzbitti] = @ArzBitti and [nMakinaID] = @nMakinaID", con);
cmd.Parameters.AddWithValue("@ArzBitti", 0);
cmd.Parameters.AddWithValue("nMakineID", "MakineID");
con.Open();
int Sayac =Convert.ToInt32(cmd.ExecuteScalar());
con.Close();

Response.Write(Sayac.ToString() + " adet var");

Öncelikle VB den anlamadığım için C# örneğini verdim ama yukarıdakilerin VB ile o kadar çok farkı olacağını sanmıyorum. Ben yukarıda şu işlemi yaptım , Bir connection nesnesi ve command nesnesi türettim gerekli cümleciğimi belirttim. Ve Parametrelerimi girdim. Daha sonra sayac değişkeni ile birlikte cümleden gelen değeri aldım ve ekrana bastım.

Umarım anlamış ve yardım edebilmişimdir. Geri dönüşde bulunursanız sevinirim.

hakan

Yorum ekle


 

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.0.0
Theme by Mads Kristensen - Düzenleme ve Uyarlama Hakan COŞAR