Merhaba asp.nette repeater içerisinde gruplama yapmak istiyorum. Aşağıdaki gibi bir tablom var. Burada stok adlarına göre gruplayıp resim 2 deki gibi bir yapı oluşturmaya çalışıyorum. For döngüsü ile her stok tip adına göre sql çağırarak bunu yapabiliyorum. Ama benim amacım for döngüsü yapmadan oluşturabilmek. Bir kaç kod parçası buldum internette. Mesela buradaki link iki tabloyu birleştirmiş.

alt text alt text

soruldu: 10 Nis '15, 03:37

zidan650's gravatar image

zidan650
375465260
cevap kabul oranı: 77%


Aşağıdaki kod ile belli bir kısmını çözdüm. Ancak aynı veriler sürekli tekrar ediyor. Yani örneğin db de 3 tane Ekran Boyutu satırı 3 tane olduğu için 3 kez ekran boyutunu yazıyor.

<asp:Repeater ID="rptFilitre" runat="server" OnItemDataBound="rptFilitre_ItemDataBound">
            <ItemTemplate>
                <table class="list">
                    <thead>
                        <tr>
                            <td><%# DataBinder.Eval(Container.DataItem, "STOK_TIP_ADI") %></td>
                        </tr>
                    </thead>
                    <tbody>
                        <asp:Repeater ID="rptFilitreAlt" runat="server">
                            <ItemTemplate>
                                <tr>
                                    <td>
                                        <%# DataBinder.Eval(Container.DataItem, "STOK_ADI") %></td>
                                </tr>
                            </ItemTemplate>
                        </asp:Repeater>
                    </tbody>
                </table>
            </ItemTemplate>
        </asp:Repeater>

C#

   private string onceki1 = "";
        protected void rptFilitre_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            try
            {
                DataRowView drv = (DataRowView)e.Item.DataItem;
                string parent = drv["STOK_TIP_ADI"].ToString();
                if (onceki1 == "")
                {
                    prvDt.DefaultView.RowFilter = string.Format("[STOK_TIP_ADI]='{0}'", parent);
                    DataTable dtChild = prvDt.DefaultView.ToTable(true, "STOK_ADI");

                    Repeater repeaterChild = (Repeater)e.Item.FindControl("rptFilitreAlt");
                    repeaterChild.DataSource = dtChild;
                    repeaterChild.DataBind();
                    onceki1 = parent;
                }
                else
                {
                    if (onceki1 != parent)
                    {
                        prvDt.DefaultView.RowFilter = string.Format("[STOK_TIP_ADI]='{0}'", parent);
                        DataTable dtChild = prvDt.DefaultView.ToTable(true, "STOK_ADI");

                        Repeater repeaterChild = (Repeater)e.Item.FindControl("rptFilitreAlt");
                        repeaterChild.DataSource = dtChild;
                        repeaterChild.DataBind();
                        onceki1 = parent;
                    }
                    else
                    {
                       //e.Item.
                    }
                }
            }
            catch { }

        }

alt text

permanent link

cevaplandı: 10 Nis '15, 03:53

zidan650's gravatar image

zidan650
375465260
cevap kabul oranı: 77%

değiştirildi: 10 Nis '15, 04:35

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×158
×6
×2

Soruldu: 10 Nis '15, 03:37

Görüntüleme: 505 kez

Son güncelleme: 10 Nis '15, 04:35

powered by BitNami OSQA