2016-03-25 8 views
2

Ich habe eine <asp:Repeater> Kontrolle und ich bin ein DataSet daran mit einer Reihe von verschiedenen DataTables binden.Binding DataSet zu einem Repeater

Ich bin verwirrt, wie man auf eine Tabelle zu meinem Repeater rechtzeitig zugreift und bindet.

Ich mag so etwas wie diese

<ItemTemplate> 
    <tr> 
     <td> 
      <asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "heading_id") %>' /> 
     </td> 
    </tr> 
</ItemTemplate> 

tun ... aber zuerst für den Tisch man dann ein neues <tr> und dann Daten aus der Tabelle zwei und so weiter.

+1

Nicht sicher, was Sie fragen, aber auf einem Seitenknoten können Sie '<% # DataBinder.Eval (Container.DataItem," heading_id ")%>' mit '<% ​​# Eval (" heading_id ") ersetzen %> '- es ist eine nette kleine Abkürzung –

+0

Danke, ja das ist, was ich normalerweise verwende :) So ist die Sache, die zu meinem Repeater gebunden wird, ein DataSet, das mehrere Tabellen darin hat. Also möchte ich heading_id aus der Tabelle [0], dann aus Tabelle [1] anzeigen ... und so weiter. –

Antwort

1

Klingt so, als ob Sie verschachtelte Repeater möchten, wobei der äußere die DataTables des DataSets darstellt und der innere die Datensätze in einem DataTable darstellt.

Persönlich habe ich verschachtelte Repeater gefunden, um mit der benutzerdefinierten Datenbindung schrecklich zu arbeiten, und wenn Sie eine Menge Ereignisbindung machen, würde ich wahrscheinlich mit einem mehr Inline-Ansatz gehen, etwas wie die folgenden:

<% foreach (var dt in MyDataSet.Tables) { %> 
    <table> 
     <% foreach (var row in dt.Rows) { %> 
      <tr> 
       <td><label><%= row["heading_id"] %></label></td> 
      </tr> 
     <% } %> 
    </table> 
<% } %> 

In Ihrem Code-behind, dann würden Sie brauchen nur Ihr DataSet-Objekt zu einem geschützten Feld oder eine Eigenschaft zuweisen.

+0

Danke Joe. Ich habe irgendwo irgendwo einen verschachtelten Repeater-Artikel angeschaut und ich denke, Ihr Ansatz ist viel sauberer ... Danke –