Hakan COŞAR

Herkes gibi, herşey..

NAVIGATION - SEARCH

GridView Hepsini Seçme İşlemi

Gridview'imizde checkboxlarımızın olduğunu varsayalım.

Üst tarafında hepsini seç şeklinde bir checkbox'ımız mevcut.

Bastığımızda gridde bulunan tüm checkboxların hepsini seçili hale getirmesini istesek ne yapardık?

 





Açıklamalar

chkHepsiniSec : GridView'in üzerinde bulunan tümünü seç checkboxımız.

gvHepsiniSecGridViewi : Adı üstünde GridView listemiz

GriddekiCheckBoxID : GridView içerisine yerleştirdiğimiz CheckBox'ın id değeri

Umarım faydalı olur.

Bir değeri, Var olan Enum tipine çevirmek

Diyelim ki RadioButtonList,CheckBoxList de bu enumları aldınız ve bunların değerlerini daha sonra karşılaştırmak isteceyeksiniz.

Elinizde Enum varken bir anda String de oldu. Dolayısı ile napabilirize baktım ve çok basit bir conver işlemi var.

Tip dönüş işlemi:

C# : DenemeEnum de = (DenemeEnum)Enum.Parse(typeof(DenemeEnum), keyword);

Vb.Net : Dim cacheKey As DenemeEnum = DirectCast([Enum].Parse(GetType(DenemeEnum), keyword), DenemeEnum)

Örnek Uygulama

        
 protected void Page_Load(object sender, EventArgs e)
{
            string keyword = "GALATASARAY";

            DenemeEnum de = (DenemeEnum)Enum.Parse(typeof(DenemeEnum), keyword);
            if (de == DenemeEnum.Hakan)
                Response.Write("Hakan Seçildi");
            else if (de == DenemeEnum.COSAR)
                Response.Write("COŞAR Seçildi");
            else if (de == DenemeEnum.GALATASARAY)
                Response.Write("ŞAMPİYON!");
 }

private enum DenemeEnum
        { 
            Hakan,
            COSAR,
            GALATASARAY
        }

Kaç Dakika-Saniye-Yıl Önce eklendi

Twitter,Rss reader vb araçlar kullanıyorsanız yazılan yazının bir tarafında mutlaka şu kadar saniye,dakika,ay,yıl önce eklendi gibi bir ifade görürsünüz.

Nasıl yaparız?

Buyrun ;

Math.Truncate() : Yapılan işlemde virgülden sonraki sayıyı alır. Kaynak : http://msdn.microsoft.com/en-us/library/c2eabd70.aspx

Not : Nereden çıktı Bu Vb.Net derseniz, Maalesef çalıştığım kurumda Vb.Net yazılmakta dolayısı ile madem C# ile ilgili paylaşımlar yapıyorum Vb.Net lerinide yapayım dan çıktı :)

C# :

private static string CreatedDate(DateTime publishDate)
        {
            TimeSpan ts = DateTime.Now - publishDate;
            double second = Math.Truncate(ts.TotalSeconds);
            double minute = Math.Truncate(ts.TotalMinutes);
            double hour = Math.Truncate(ts.TotalHours);
            double day = Math.Truncate(ts.TotalDays);
            double month = Math.Truncate(ts.TotalDays / 30);
            double year = Math.Truncate(month / 12);

            string yazilanZaman = string.Empty;
            
            if (second < 60)
                yazilanZaman = second + " saniye ";
            else if ((minute > 0) && (minute < 60))
                yazilanZaman = minute + " dakika ";
            else if ((hour > 0) && (hour < 24))
                yazilanZaman = hour + " saat ";
            else if ((day >= 1) && (day < 30))
                yazilanZaman = day + " gün ";
            else if (month >= 1)
                yazilanZaman = month + " ay ";
            else if (year >= 1)
                yazilanZaman = year + " yıl ";

            return string.Format("{0} önce eklendi", yazilanZaman);
        }

VB.Net

Private Shared Function CreatedDate(ByRef publishDate As DateTime) As String
        Dim ts As TimeSpan = DateTime.Now - publishDate
        Dim second As Double = Math.Truncate(ts.TotalSeconds)
        Dim minute As Double = Math.Truncate(ts.TotalMinutes)
        Dim hour As Double = Math.Truncate(ts.TotalHours)
        Dim day As Double = Math.Truncate(ts.TotalDays)
        Dim month As Double = Math.Truncate(ts.TotalDays / 30)
        Dim year As Double = Math.Truncate(month / 12)

        Dim yazilanZaman As String = String.Empty

        If (second < 60) Then
            yazilanZaman = second & " saniye "
        ElseIf ((minute > 0) And (minute < 60)) Then
            yazilanZaman = minute & " dakika "
        ElseIf ((hour > 0) And (hour < 24)) Then
            yazilanZaman = hour & " saat "
        ElseIf ((day >= 1) And (day < 30)) Then
            yazilanZaman = day & " gün "
        ElseIf (month >= 1) Then
            yazilanZaman = month & " ay "
        ElseIf (year >= 1) Then
            yazilanZaman = year & " yıl "
        End If
        Return String.Format("{0} önce eklendi", yazilanZaman)

    End Function

Umarım faydalı olur.

ForEach ile enum

Enum koleksiyonu içerisinde Foreach ile döneceksek;

buyrunnn

C# :

foreach (enumKeys item in Enum.GetValues(typeof(enumKeys)))
  {
                
    }

VB :

For Each item As enumKeys In [Enum].GetValues(GetType(enumKeys))
Next

 

Kaynak : http://stackoverflow.com/questions/105372/how-to-enumerate-an-enum

Kitap : Şah & Sultan

Kitabı bitireli uzun zaman olsada eklemek bugüne nasipmiş.

Uzun zaman sonra böyle bir kitap okudum ve bir solukta bitirdim. Buraya takip edenler farketmişlerdir ki kitabın okuyorum bölümüne gelmesi ile birlikte kalkması bir oldu. (Bu önümüzdeki bir ay yoğunluğumdan dolayı okuyorum bölümündeki kitaplar geçici bir süre öyle kalacak)

İnanılmaz sürükleyici, bir çırpıda oturulup okunması gereken kitaplardan biri. Zaten elinize aldığınızda mutlaka şu bölümüde okumak lazım, bu bitti diğerine geçeyim derken bir anda kitabı bitirdiğinizin farkına varacaksınız.

Çok etkilendim açıkcası.

Raflarınıza almanız gereken kitaplardan biri.

ListBox Seçili olanları Liste ile almak

Yoğunluğumdan dolayı yazmam,yapmam gereken herşeyi 1 ay erteledim. 1 ay sonra daha güzel günler bekliyor olacak.

Bu arada karşılaştığım ufak ipuçlarınıda paylaşayım

C#

listController.Items.Cast().Where(p => p.Selected == true).ToList()

Vb.Net :

listController.Items.Cast(Of ListItem)().Where(Function(p) p.Selected = True).ToList()

Geriye liste ile seçili itemları alabilirsiniz.

Bugünkü Dersimiz - 5

1) Aldığım tepkiler doğrultusunda bulunduğum ortamda herkese güler yüzlü olmayacağım. Somurtmak gerekiyorsa somurtacağım. Net. Çizgilerim belli olacak. (Ne kadar rahat bir adam olduğumu biliyorum bakalım yapabilecek miyim? )

2) Osmanlı tokadını bir kere daha tattıran insanlara da ayrıca buradan teşekkür ederim. Yüzüm acısa da Seviyorum sizi. Öpeceğim yakında sizleri.

 

N'apıyor muşuz? Kulaklığımızı takıyor hayatta ilişkimizi kesiyor önümüze bakıyormuşuz.

Azıcık da biz gol atalım la!

Jquery ile Filtreleme

Bir uygulamamda jquery ile filtreleme gerekiyordu.

Tam amacım şuydu ; Sıralı Listede olan (herhangi bir şekilde veritabanına gitmeden) metinler arasından filtreleme yapmam gerekiyordu.

Araştırma işlemine başlarken daha değerli dostum Faik Günay'ın bloğunda rastladım. İşte Burada

Bu işlem başarılı bir şekilde yürüyordu ancak UpdatePanel içerisinde koyduğumda birden fazla ajax işlemleri yaptığımda filtreleme çalışmıyordu.

Çözümü ise ;


Betiği PageLoad arasına aldım o kadar. Diğer jquery işlemlerim ile birlikte hepsi çalışmaya başladı.

Kolay gelsin

Entity Framework : The ObjectContext instance has been disposed and can no longer be used for operations that require a connection

EntityFramework benim için gitgide güzelleşmeye başladı ki sanırım bundan sonraki yapacağım işlerimde artık farklı bir yapı kullanacağımı düşünmüyorum. Sevdim bu işi ben.

Hatanın Tam metni

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

Yada

System.ObjectDisposedException: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

Kullanıcıyı çekerken içerisinde rolleride çekmem gerekiyordu. Biliyorsunuz varsayılan olarak LazyLoading=true geldiği için herhangi bir kısıtlama yada farklı bir yol izlememiştim. Nasıl olsa User.UserInRole şeklinde ulaşacaktım.

Yetkilendirme ile ilgili bir kaç atraksiyon yapayım derken yukarıdaki hataları aldım.

Hatanın çözümü ;

1.çözüm :

1) Rolleri çekerken tekrar database gitmem gerektiği için aynı şekilde Dbmodel entity üzerinden kodları koşturmam gerekiyordu. Yani Rolleri çağırdığımda tekrar katmanlarımın üzerinden sorguyu çalıştıracak Entitymodel nesnemi yaratıp onun üzerinden sorgu sonucumu almalıydım.

Diğer bir anlatımla Bu sorguyu DbContext nesnesi içerisinde çalıştırmalısınız.

ya da

2.çözüm :

1) Bunlara hiç gerek kalmaz ben kullanıcıyı çekerken otomatik olarakda rollerini dolu gelsin istiyorum diyorsanız veri katmanınızda include ederekde Explicitly olarak nesnenizi doldurabilirsiniz.
 Örnek : from p in entity.User.Include("UserInRole")

Ben 2. çözümü kullanarak gittim çünkü roller projemin yer yerinde lazım olacaktı.

Umarım faydalı olur.

Başlık : '': type used in a using statement must be implicitly convertible to 'System.IDisposable'

EntityFramework maceramıza devam ederken hatalarla karşılaşıyoruz. Aşağıdaki hatayı ilk zamanlarda almıştım. Ancak Entity modeli farklı bir proje içerisinden katmanlarla çağırdığım için çözme ihtiyacı duymamıştım. Taki tekrar hata ile karşılaşıncaya kadar.

 using (DB_EntityModel entity = new DB_EntityModel())
  {

  }

yukarıdaki satırları projenizin herhangi bir yerinde kullanıyorsanız '': type used in a using statement must be implicitly convertible to 'System.IDisposable' şeklinde bir hata ile karşılacaksınız.

Not1 : Tabiki siz sadece web projesi içerisinde aynı şekilde modellerinizi de barındırıyorsanız herhangi bir hata almayacaksınız.

Ancak iş katmanı ve veri katmanını ayırdığınızda ekle sil güncelleme gibi işlemleri katmanlar üzerinden yapıyorsunuz. Size sadece web projesinden katmanlarınız aracılığı ile belirttiğiniz metodları çağırmak kalacaktır. Dolayısı ile web projenizde hiç bir şekilde dataya erişim sağlamıyorsunuz. Ancak öyle anlar oluyor ki mecbur kalabiliyorsunuz. (Kaçamak yol:) Normali hiç bulaşmamak katmanlar aracılığı ile halletmektir.)

Çözüm : projenizde EntityFramework.dll bulunmamasından kaynaklanıyor. Reference olarak eklediğiniz zaman aşağıdaki entity modelinizdeki using satırındaki hata da giderilecektir.

Umarım faydalı olur

Not : web projesi diyorum, çünkü genelde web üzerine yapıyorum geliştirmelerimi herhangi bir yanlış anlaşılmaya gelmeyelim :)

Asp.Net TreeView HyperLink silmek (TreeView de Linkleri Silme)


Bir uygulamada Treeview kullanma ihtiyacımız olduki genelde en sevmediğim kontrollerden biridir. Neden sevmiyorum bilmiyorum:)

Resimde de gördüğünüz üzere Spor ve Yazarlar şeklinde 2 ana menümüz var bir kullanıcının bu menüler arasında hangilerini görüp görmeyeceği konusunda yetkilendirmemiz gerekiyor.

Buraya kadar herşey normal ancak treeview'i ekleyip içindeki alanları doldurduğumuzda her bir alanın sanki birer linkmiş gibi davrandığını görebilirsiniz. Bu da bizim için hoş bir durum değil sadece yanındaki checkbox'ın işaretlenip işaretlenmemesi önemli.

İşte burada yardımımıza koşan satır ise ;

node.SelectAction = TreeNodeSelectAction.None;

node : Treeview'miz içerisinde bulunan içeriği temsil ediyor.

Kaynak : http://abhijitjana.net/2010/09/24/how-to-remove-hyperlink-from-asp-net-treeview-nodes-control-nodes/

Umarım faydalı olur.

Kitap : Basitlik Kanunları

Basitlik üzerine yazılmış güzel bir kitap. Kısa sürede bitirebilirsiniz.

Yaptığınız işlerde yada planlarınızda bence çok zor iç içe geçmiş bütün yapıları bir kenara bırakın ve basitliğe odaklanın.

Yazar bir çok örnek ile bunu size zaten aşılıyor.

Kitapta toplamda 10 kanun ve 3 anahtarı size aşılıyor.