Hakan COŞAR

HERKES GIBI, HERŞEY..

Bugünkü Dersimiz - 6

Tamamen kendi ciddiyetsizliğimden dolayı "ciddi" olarak yaptığım/söylediğim şeyler dikkate alınmıyor. Tamamen suçlusu benim.

Azıcık ciddi oluncada hiç yakıştıramıyorlar. Bununda tamamen suçlusu benim.

Ortası sanırım sıradan olup onlar gibi davranmak.

Kabul ediyorum bende artık, sıradan,onlar gibi "ciddi" olacağım.

Vakit ciddiyet vaktidir.

GridView Hepsini Seçme İşlemi - 2

Dün hatırlarsanız Gridview de Tümünü seç checkbox ile bir işlem yapmıştık.

Tümünü seçtik, ancak gridlerden bir tanesinin CheckBox'ı kaldırıldığı zaman otomatik olarakda "Tümünü Seç" Checkbox'ın kaldırılması gerekmez miydi?

Buyrun ;

//GridView içerisinde cbGridCheckItem ile başlayan Checkboxların Checked eventini yakalıyoruz;

$("[id*=cbGridCheckItem]").change('checked', function (event) {
            checkKontrol();
        });

 //Gridviewdeki tüm checkboxlar checkli ise Tümünü Seç'i Checked duruma getirir. Aksi halde Checklemez.
        function checkKontrol() {
            var totalCheck = $("#<%=GridViewItem.ClientID%> input[id*='cbGridCheckItem']:checkbox").size();
            var checkedCheck = $("#<%=GridViewItem.ClientID%> input[id*='cbGridCheckItem']:checkbox:checked").size();
            if (totalCheck == checkedCheck)
                $('#<%=chkHepsiniSec.ClientID%>').attr('checked', true);
            else
                $('#<%=chkHepsiniSec.ClientID%>').attr('checked', false);
        }

Aslında işlem olarak şunu yapıyoruz;

GridView içerisindeki tüm checkboxların sayısını buluyoruz.

GridView içerisindeki tüm işaretli checkboxların sayısını buluyoruz.

Eşit ise tümünü seç'i işaretle değil ise işaretini kaldır.

Umarım faydalı olur.

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.

Jquery ile attribute silmek

Sayfa bulunan tüm Select boxların manuel olarak eklenmiş style attributelerini silmek istesek napardık?

Buyrunn..

 

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 :)