2017-12-09 2 views
2

Ich haben Probleme, die Daten aus dem unteren Tabellenformat zu gruppieren und zu Gruppe, die versucht, die Daten alsGruppieren von Daten mit Datentabelle mit ASP.NET

in der zweiten Tabellenformat erwähnt
legacy     subid        converted  licPart   count 
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-100 100 
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OB USR E-LTU LIC-CP-EN-100 100 
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OG EP E-LTU LIC-CP-EN-100 100 
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-100 100 
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OB USR E-LTU LIC-CP-EN-100 100 
Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OG EP E-LTU LIC-CP-EN-100 100 
Ent 1K EP Lic E-LTU  7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-1K 1000 
Ent 1K EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OB USR E-LTU LIC-CP-EN-1K 1000 
Ent 1K EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL OG EP E-LTU LIC-CP-EN-1K 1000 

und ich versuche, das zu bekommen Daten wie unten auf eine weitere Zuweisung der Info-Repeater

Ent 100 EP Lic E-LTU 7ks7gp-qc42sn-g7zk0q-7pzmb7-xdp6yb NL AC CE E-LTU LIC-CP-EN-100 100 
                  NL OB USR E-LTU 
                  NL OG EP E-LTU 

Ent 100 EP Lic E-LTU          NL AC CE E-LTU LIC-CP-EN-100 100 
                  NL OB USR E-LTU 
                  NL OG EP E-LTU 

Ent 1K EP Lic E-LTU           NL AC CE E-LTU LIC-CP-EN-1K 1000 
                  NL OB USR E-LTU 
                  NL OG EP E-LTU 

ich während RowDataBound Veranstaltung mit der Grid-Ansicht versucht, anzuzeigen und seine Arbeit gut, aber ich bin nicht in der Lage, das gleiche mit dem Repeater zu bekommen. Ich bin sicher, dass wir die Daten zu gruppieren müssen, bevor wir es an den Repeater

Aber ich bin nicht sicher, wie zu einer Gruppe zuweisen die Daten als wie oben

erwähnt

Das ist mein Repeater-Code ist

<asp:Repeater ID="RepeaterEnterprise" runat="server" OnItemDataBound="ItemBound"> 
          <HeaderTemplate> 
           <table> 
            <tr> 
             <th>Avaialable Endpoints 
             </th> 
             <th>Converted Endpoints 
             </th> 
            </tr> 
          </HeaderTemplate> 
          <ItemTemplate> 
           <tr> 
           <td> 
           <table> 
           <tr> 
            <td> 
             <asp:TextBox runat="server" ID="txtAvaialble" Text='<%#Eval("LicenseCount") %>' ReadOnly="true"> 
             </asp:TextBox> 
            </td> 
            <td> 
             <asp:TextBox runat="server" ID="txtConverted" Text='' ReadOnly="true"> 
             </asp:TextBox> 
            </td> 
            <td>          
              <tr> 
               <td> 
                <asp:Label ID="lblcount" runat="server" Text='<%# Eval("Converted") %>'></asp:Label> 
               </td> 
               <td>25* 
               </td> 
              </tr> 
             </table> 
             <table> 
              <tr> 
               <td> 
                <asp:TextBox runat="server" ID="txtEndpoints" Text=''> 
                </asp:TextBox> 
               </td> 
               <td> 
                <asp:TextBox runat="server" ID="txtTotalEndPoints" Text='' ReadOnly="true"> 
                </asp:TextBox> 
               </td> 
              </tr> 
             </table> 
            </td> 
           </tr> 

          </ItemTemplate> 
          <SeparatorTemplate> 
           <tr> 
            <td> 
            </td> 
           </tr> 
          </SeparatorTemplate> 
          <AlternatingItemTemplate> 
           <table> 
           <tr> 
            <td> 
             <asp:TextBox runat="server" ID="txtAvaialbleEndPoints" Text='<%#Eval("Count") %>' ReadOnly="true"> 
             </asp:TextBox> 
            </td> 
            <td> 
             <asp:TextBox runat="server" ID="txtConvertedEndPoints" Text='' ReadOnly="true"> 
             </asp:TextBox> 
            </td> 
            <td>          
              <tr> 
               <td> 
                <asp:Label ID="lblcountryname" runat="server" Text='<%# Eval("Converted") %>'></asp:Label> 
               </td> 
               <td>25* 
               </td> 
              </tr> 
             </table> 
             <table> 
              <tr> 
               <td> 
                <asp:TextBox runat="server" ID="txtEndpoints" Text=''> 
                </asp:TextBox> 
               </td> 
               <td> 
                <asp:TextBox runat="server" ID="txtTotalEndPoints" Text='' ReadOnly="true"> 
                </asp:TextBox> 
               </td> 
              </tr> 
             </table> 
          </AlternatingItemTemplate> 
          <FooterTemplate> 
           </table> 
          </FooterTemplate> 
         </asp:Repeater> 

Kann jemand eine Idee zu dieser Lösung haben, wie Gruppierung zu machen?

+0

Einfach fragen, die ersten 3 Zeilen sind die gleichen wie Zeilen 4-6. Sind das echte Daten? Es könnte die Antwort beeinflussen. – wazz

+0

@wazz seine realen Daten yeah wir können zwei weitere gleiche Art von Daten –

+0

Könnten Sie bitte irgendwelche Ideen zu dieser Gruppierung vorschlagen ... –

Antwort

2

die Gruppierungsregeln nicht offensichtlich sind in Ihren ersten Fragen, sondern auf der Grundlage Ihrer Kommentare, ich nehme an, Sie

müssen
  • Gruppe die Datensätze von Identifikatoren wie subid
  • ein mehr subid Ergebnis aussetzen Mal wenn konvertiert Feld zeigt sich oft

Ich kann mir vorstellen, Sie haben einige sor t von Klassen, die jene unten

public class InputModel 
{ 
    public string legacy { get; set; } 
    public string subid { get; set; } 
    public string converted { get; set; } 
    public string licPart { get; set; } 
    public string count { get; set; } 
} 

public class OutputModel 
{ 
    public string legacy { get; set; } 
    public string subid { get; set; } 
    public IList<string> list { get; set; } 
    public string licPart { get; set; } 
} 

unter anderem Lösungen ähneln Sie auf einem reducer/fold/aggregate Ansatz verlassen können und dass, C# ist praktisch mit enumerable .Aggregate (einige schöne Beispiele in here auch gefunden werden)

var seed = new List<OutputModel>(); 
var outcome = records 
    .Aggregate(seed, (results, current) => 
    { 

     var query = from result in results 
        where result.legacy == current.legacy 
         && (result.list == null 
          || !result.list.Contains(current.converted)) 
        select result; 
     var output = query.FirstOrDefault(); 
     if (output == null) 
     { 
      output = new OutputModel 
      { 
       legacy = current.legacy, 
       subid = current.subid, 
       licPart = current.licPart, 
       list = new List<string> 
       { 
        current.converted 
       } 
      }; 

      results.Add(output); 
     } 
     else 
     { 
      output.list.Add(current.converted); 
     } 

     return results; 
    }); 

wird Ihnen dieses

enter image description here

siehe

bearbeiten

auf Anfrage unten Eine Möglichkeit der Zuordnung einer Tabelle zu einem Eingang aufzeichnet Sammlung

public static class Extensions 
{ 
    public static IEnumerable<InputModel> Map(this DataTable instance) 
    { 
     foreach (DataRow row in instance.Rows) 
     { 
      yield return new InputModel 
      { 
       legacy = (string)row[0], 
       subid = (string)row[1], 
       converted = (string)row[2], 
       licPart = (string)row[3], 
       count = (string)row[4], 
      }; 
     } 
    } 
} 
+0

danke für Sie Unterstützung, aber ich brauche die Gruppierung wie im zweiten Datenformat erwähnt .. zuletzt Liste für den ersten Artikel Ich habe drei Artikel und für den zweiten Artikel (LIC-CP-EN-1k) habe ich 1 und dann für den dritten Artikel (LIC_EN_CP_1k) zwei Artikel. Ich brauche drei Artikel für den zweiten und dritten Artikel Auch –

+0

die Geschäftslogik, die Sie für die Gruppierung verwenden möchten, war zunächst nicht so klar, aber ich habe meine Antwort aktualisiert, um Ihre zusätzlichen Details zu reflektieren. Sehen Sie das ganze Bild https: //gist.github.com/dandohotaru/724d1206c79631219de338f44a8ee61b –

+0

Ich bekomme diese Daten aus der Datentabelle, aber ich bin mir nicht sicher, wie diese Logik mit Datentabelle anwenden. –