logo Unutmayayım diye yazdıklarım...


Dictionary<TKey, TValue> 'den DataSource Nasıl Olur?

17.06.2009 tarihinde oğuzhan tarafından yazıldı.

Şu jenerik (Generics) kolleksiyon (Collections) sınıflarını çok iyi akıl etmişler. Alışkanlık oldu özellikle .Net 3.5 ile birlikte her kontrolün verikaynağına (datasource) generic sınıftan türemiş bir nesne tanımlıyorum. Böyle olunca da binbir çeşit generic list ile iyi anlaşmak gerekiyor. Bunlardan bir taneside Dictionary!. Fazla uzatmadan koda geçeyim.

Dictionary sınıfından bir nesneyi DataList veya GridView'e datasource olarak atayacaksanız aşağıdaki aşağıdaki gibi hareket edebilirsiniz.
<asp:DataList ID="ParametreListesi" runat="server" Width="100%">
<ItemTemplate>
<dl>
<dt><label>Parametre</label></dt>
<dd><input id="Text1" type="text" style="width:150px;" value='<%# Eval("Value") %>' name='<%# Eval("Key") %>'/></dd>
</dl>
</ItemTemplate>
</asp:DataList>
Dictionary sınıfı ComboBox kullanırken de çok güzel gidiyor. O da şu şekilde kullanılabiliyor.
var tipler = new Dictionary();
tipler.Add(1, "String");
tipler.Add(1, "Int");
tipler.Add(1, "byte");

comboBox1.DataSource = tipler;
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
Ek olarak Dictionary içinde KeyValuePair diye bir Structure hazırlamışlar. KeyValuePair'da aşağıdaki gibi gerçekleşiyor.
foreach( KeyValuePair kvp in tipler)
{
Console.WriteLine("Key = {0}, Value = {1}",
kvp.Key, kvp.Value);
}
Bu arada ceviz.net'te Ali Çehreli'nin çevirdiği güzel bir yazı yayınlandı. Benim ilgimi çekti, belki sizinde çeker.

http://www.ceviz.net/neden-d_s1_a1290.html


 

#Murat Eltimür+, 21.08.2009 01:18:56 tarihinde demiş ki...
ICollection türetilen her sınıfı seviyorum. Çok Çok eskiden datatable kullanmaktan gına gelmişti :)

Combobox, Grid vb. datasource kullanabilen tüm componentler için Collection ve/veya List kullanmayı öneririm. Ayrıca bu türlerde linq ile verileri kolayca sorgulayabiliriz. Aşağıdaki gibi örneklerde hata yapmamızı azaltacaktır. GetProductDetail() metodundan dönen listeği hertürlü datasource de kullanabiliriz.

[Serializable]
private class Detail
{
public Guid Oid { get; set; }
public string ShortContent { get; set; }
public string BannerPathString { get; set; }
public string LargeBannerPathString { get; set; }
}

protected List<Detail> GetProductDetail()
{
Li
#Oğuzhan-, 21.08.2009 11:23:33 tarihinde demiş ki...
GetProductDetail() metodunu göremedik ;)
#Murat Eltimür+, 27.08.2009 23:56:12 tarihinde demiş ki...
yorum metni sınırlı !

Yorum Yapın
İsim (String)
Mail (String)
2, 4 daha yapar. (Int)

*NVarChar*3 + html desteğide yok.
(bit)
Sosyal Ağ Antenleri
Blog RSSLinkedinFacebookFlickrTwitterFriendfeedGoogle ReaderYoutubegit
  • Açılış
  • Projelerim
  • Arşiv
  • İletişim
  • En çok ilgi görenler...

    HP IPAQ 914c
    Mikrotik
    NETSH'dan faydalanmak
    Togi Twitter Client
    Mikrotik ADSL Bridge.
    Netsis SQL Raporları.
    SQL Server Optimizasyonu.
    VBScript.Encode - Encode
    C# ile DataGridView den Excel 'e
    C# ile mail gönder
    Netsis SQL Server Değişikliği.
    Windows Sunucularda SYN Atakları.

    Rastgele birşeyler...

    Gittim, Gördüm, Geld...
    Crysis...
    TaskInfo2003v50090...
    localdedicated.com...
    VB6'yı Console Çalış...
    SQL İnjection...
    Dikkat! GSM operatör...
    pleskten Plesk'e...
    Access Web Paylaşımı...
    Kapsama alanınızı gü...
    DNS Server...
    Msn'den Twitter'a ya...
    Manitanın hediyesi....
    Dünyanın En uzun Dom...
    Off Offf hala bitmed...
    Google'ın İstediği o...

    Şebeke

    WHT, Fıroİş, Denizİş, Serkan, Semih, Sewgi, Beşir, İzgençvos, Erkan, Mumin, Aliİş, Lütfü, Alper, Yusuf

    2003 - Oğuzhan YILMAZ
    Bir şey alıntıladığınız zaman kaynak göstermeniz yeterli.


    Web Hosting Sponsor Vargonen Technologiies