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.