aus T-SQL XML RAW eine Datasource für den asp:repeater erzeugen

Executive Summary:
Um was geht es in diesem Beitrag:
Inhaltsverzeichnis

Im Rahmen unseres Entwicklungs-Mandats für einen mittelständisches Systemhaus mit eigenem Webshop-Produkt, haben wir uns intensiv mit dem repeater-Control von ASP.net beschäftigen dürfen.

Die Herausforderung bestand in einem geschachtelten Repeater. Das klassische Problem lautete: Angebote mit den jeweiligen Angebotspositionen darzustellen. Dazu haben wir die XML-Funktion von T-SQL (SQL Server) genutzt. Die notwendigen Positionsdaten werden als Spalte in dem Angebot, formatiert als RAW-XML, aus der Datenbank geholt:

SELECT 
 OfferPos_P.s_PosNo OfferPos_PosNo,
 OfferPos_P.s_ItemDesc1 OfferPos_ItemDesc1,
 OfferPos_P.N_PACKQUANTITY OfferPos_PackQuantity
FROM 
 sao.OFFERPOS_P with (Nolock)
 WHERE
 OFFERPOS_P.dt_deleted IS NULL
 AND OFFERPOS_P.I_OFFER_P = @nOfferID
FOR XML RAW

Innerhalb des 1. Repeater beinhaltet dann diese Spalte die passenden Positions-Daten. Dieses XML wird dann mit einer kleinen Funktion in eine IEnumerable-Datasource umgewandelt:

public IEnumerable<offerPos> CreateOfferPosDataSource(object xmlData)
 {
 XDocument doc = XDocument.Parse($"<?xml version=\"1.0\"?>{xmlData.ToString()}");
 IEnumerable<offerPos> result = from c in doc.Descendants("row")
 select new offerPos()
 {
 posNo = (string)c.Attribute("OfferPos_PosNo").Value,
 itemDesc1 = (string)c.Attribute("OfferPos_ItemDesc1").Value,
 packQuantity = (decimal)c.Attribute("OfferPos_PackQuantity")
 };
 return result;
 }

Am Ende kann dann diese Datasource für den zweiten Repeater genutzt werden.

<asp:Repeater runat="server" DataSource='<%# CreateOfferPosDataSource(Eval("offerpos_xml")) %>'>
 <ul>
 <ItemTemplate>
 <li><%# Eval("posNo") %>: <%# Eval("itemDesc1") %></li>
 </ul>
 </ItemTemplate>
 
 </asp:Repeater>

Cool oder?

weitere insights

Was bedeutet CRM?

CRM bedeutet Customer Relationship Management und dient der Administration der Kundenbeziehungen. Das System unterstützt Unternehmen, die Beziehung zu ihren Kunden zu verbessern. Ziel ist es,

weiterlesen >>

Abkürzungen in der Cloud

Die Erfindung der Cloud animierte Informatiker und PR-Berater zu neuen Abkürzungen. Die Computerwoche hat die beliebtesten Abkürzungen aufgelistet. Den Artikel finden Sie hier: Was die

weiterlesen >>