XmlDataSource ve Filtreli Sorgulama İşlemleri

Kodla Büyü

togius

Süper Üye
Süper Üye
Mesajlar
1,726
filtreleme yapacağımız xmller için özellik olarak tanımlamamız gerekmektedir. Örneğin Xmlimiz aşağıdaki gibi olsun.

Kod:
<?xml version="1.0" encoding="utf-8"?>
<menuler>
  <menu>
    <altmenu dahilisayfa="False" haricisayfaurl="online.aspx" sayfaid="55" altsayfaid="31" baslik="Online Mesaj" hedef="_self" />
  </menu>
  <menu>
    <altmenu dahilisayfa="False" haricisayfaurl="ZiyaretciDefteri.aspx" sayfaid="56" altsayfaid="31" baslik="Ziyaretçi Defteri" hedef="_self" />
  </menu>
  <menu>
    <altmenu dahilisayfa="True" haricisayfaurl="" sayfaid="57" altsayfaid="61" baslik="Hakkımızda" hedef="_self" />
  </menu>
  <menu>
    <altmenu dahilisayfa="True" haricisayfaurl="" sayfaid="58" altsayfaid="61" baslik="Personelimiz" hedef="_self" />
  </menu>
</menuler>

Daha sonra XmlDataSource umuzu ve Bunu için kullanacağımız Repeaterı aşağı şekilde yapılandıracağız.

Kod:
<asp:XmlDataSource ID="XmlDataAltMenu" runat="server" 
                                        DataFile="~/Uploads/Xml/altmenuler.xml" XPath="menuler/menu/altmenu">
                                    </asp:XmlDataSource>

Kod:
<asp:Repeater ID="rpMenulerAltSayfalar" runat="server" DataSourceID="XmlDataAltMenu">
                                        <HeaderTemplate>
                                            <ul>
                                        </HeaderTemplate>
                                        <ItemTemplate>
                                            <li><a href='<%# XPath("@dahilisayfa").ToString().ToLower()=="true"?XPath("@sayfaid","menuAltSayfalar.aspx?SayfaID={0}"):XPath("@haricisayfaurl") %>' 
                                                            title='<%# XPath("@baslik") %>'
                                                            target='<%# XPath("@hedef") %>'>
                                                <%# XPath("@baslik") %></a></li>
                                        </ItemTemplate>
                                        <FooterTemplate>
                                            </ul>
                                        </FooterTemplate>
                                    </asp:Repeater>

Yani özellik olan sayfalar için @özellik_adı kullanılmalıdır. XPath ilede bunları @ işareti kullanarak gösteririz. Mesela XPath="menuler/menu/altmenu" yerine
XPath="menuler/menu" yazarak XmlDatasource umuzu tanımlasaydık. Repeater içindeki XPathlerimizde ("altmenu/@sayfaid") gibi bir tanımlama yapacaktık.
 
Geri
Üst