İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

[WPF] DataGrid, List<T> ve Linq

kizanlik14.05.20121 cevap1.692 görüntüleme
#1
Merhaba,

Arayüz: WPF

Sunucu tarafında API çalışıyor.
Bir method veritabanından veriyi çekiyor, XML'e dönüştürerek clienta gönderiyor.

- Client tarafında iki DataGrid var.
- Client, birinci DataGridi veriye bind ediyor.
- Kullanıcı birinci DataGrid içerisinde bir satırı tıkladığında, Linq ile veri filtreleniyor ve ikinci DataGridi filtrelenen veriye bind ediyor.

Buraya kadar bir problem yok. Problem şurada başlıyor:

Bind edilen ikindi DataGridin verisi, Linq/Select ile geldiğinden ReadOnly geliyor.

Filtrelenen veriyi, geçici olarak bi' yere almak / geçici yerde değişiklik yapmak / değişiklikleri ana veriye göndermek

dışında çözüm önerebilecek kimse var mı?

Teşekkürler...
Cevaplar
kizanlik Konuyu açan
#2
Çözümü buldum. Benzer senaryoyla karşılaşanlar olabilir düşüncesiyle bulduğum çözümü paylaşmak istiyorum. Yazdığım API'ın döndürdüğü XML formatı şöyleydi:

<root>
    <item1>...</item1>
    <item2>...</item2>
    .
    .
    .
    <itemN>...</itemN>

    <array1>
        <array1Item1>
            <item1>...</item1>
            <item2>...</item2>
        </array1Item1>
        <array1Item2>
            <item1>...</item1>
            <item2>...</item2>
        </array1Item2>
    </array1>

    <array2>
        <array2Item1>
            <item1>...</item1>
            <item2>...</item2>
        </array2Item1>
        <array2Item2>
            <item1>...</item1>
            <item2>...</item2>
        </array2Item2>
    </array2>
</root>


Yukarıdaki yapıya sahip veriye

DataGrid1 --> array1
DataGrid2 --> array2

yapısı oluşturmak istiyordum fakat array1den seçilen array1ItemNe göre de array2de gelen ilgili veriyi filtrelemekti amacım. Linq yardımıyla filtreleyebiliyorum fakat ReadOnly geldiği için veri üzerinde değişiklik yapamıyordum. Yapıyı şöyle değiştirdim:


< root>
    <item1>...</item1>
    <item2>...</item2>
    .
    .
    .
    <itemN>...</itemN>

    <array1>
        <array1Item1>
            <item1>...</item1>
            <item2>...</item2>

            <-------------------------------->

            <array2>
                <array2Item1>
                    <item1>...</item1>
                    <item2>...</item2>
                </array2Item1>
                <array2Item2>
                    <item1>...</item1>
                    <item2>...</item2>
                </array2Item2>
            </array2>

            <-------------------------------->

        </array1Item1>
        <array1Item2>
            <item1>...</item1>
            <item2>...</item2>

            <-------------------------------->

            <array2>
                <array2Item1>
                    <item1>...</item1>
                    <item2>...</item2>
                </array2Item1>
                <array2Item2>
                    <item1>...</item1>
                    <item2>...</item2>
                </array2Item2>
            </array2>

            <-------------------------------->

        </array1Item2>
    </array1>
< /root>


Bu sayede array1Item1 ve arrayItem2 bloklarını ayrı ayrı veri blokları olarak aldım. Her blok içerisinde de array2 bloğu var. Buradaki veriler de array1e göre filtrelenerek oluşturuluyor. Böylece DataGrid1i array1e, DataGrid2yi de array1 içerisindeki array2ye bind ediyorum. Filtrelemeye de gerek kalmıyor.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.