none
Wie Gridview "so" formatieren? RRS feed

  • Frage

  • Hallo,

    ich möchte ein Gridview in diesem Stil erzeugen:

     

    Die Daten kommen aus einer SQL Datenbank.
    Durch eine Abfrage erhalte ich z.B. Kurse, die Regionen bekomme ich dann anhand des Kurses und der 1. Abfrage usw.

    Wie schaffe ich das das Gridview dann etwa so wie oben ausschaut?
    Mit einer Region, einem Land als Ausgabe könnt ich mirs vorstellen aber ich weis nicht wie ich es so wie oben hinbekomme.

     

    Gruß sim_n

    Montag, 18. Oktober 2010 09:02

Antworten

  • Hi,
    ich möchte ein Gridview in diesem Stil erzeugen:

     

    das GridView Control ist hierfür wohl so ziemlich das denkbar schlechteste Control. Die Ausgabe entspricht eigentlich eher einem geöffneten TreeView. Man kann das zwar "irgendwie" machen, sinnvoll und/oder sauber ist das aber nicht.

    Wenn Du kein TreeView aufbauen willst, würde ich eher auf verschachtelte Repeater setzen (oder auf was ganz eigenes). Damit kannst Du die Ausgabe problemlos so gestalten, wie Du es haben willst.

    Bei Verwendung von Repeatern kannst Du dir die ItemTemplates entsprechend so aufbauen:

    <asp:Repeater ...>
      <ItemTemplate>
        <tr>
          <td>Gesamt</td>
          <td><%# Container.DataItem.Gesamt %></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <asp:Repeater ...>
          <ItemTemplate>
            <tr>
              <td>&nbsp;</td>
              <td><%# Container.DataItem.Kursname %></td>
              <td><%# Container.DataItem.Anzahl %></td>
              <td>Teilnehmer</td>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <asp:Repeater ...>
              <ItemTemplate>
                <tr>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                  <td><%# Container.DataItem.Region %></td>
                  <td><%# Container.DataItem.Anzahl %></td>
                  <td>Teilnehmer</td>
                  <td>&nbsp;</td>
                </tr>
              </ItemTemplate>
            </asp:Repeater ...>
          </ItemTemplate>
        </asp:Repeater ...>
      </ItemTemplate>
    </asp:Repeater ...>
    
    

    Ist auch nicht unbedingt schön, funktioniert dafür aber :)

    Du müsstest dann innerhalb der ItemDataBound Events der einzelnen Repeater die Datenquelle für die inneren Repeater Controls setzen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert sim_n Mittwoch, 20. Oktober 2010 06:47
    Montag, 18. Oktober 2010 10:56
    Moderator

Alle Antworten

  • Hi,
    ich möchte ein Gridview in diesem Stil erzeugen:

     

    das GridView Control ist hierfür wohl so ziemlich das denkbar schlechteste Control. Die Ausgabe entspricht eigentlich eher einem geöffneten TreeView. Man kann das zwar "irgendwie" machen, sinnvoll und/oder sauber ist das aber nicht.

    Wenn Du kein TreeView aufbauen willst, würde ich eher auf verschachtelte Repeater setzen (oder auf was ganz eigenes). Damit kannst Du die Ausgabe problemlos so gestalten, wie Du es haben willst.

    Bei Verwendung von Repeatern kannst Du dir die ItemTemplates entsprechend so aufbauen:

    <asp:Repeater ...>
      <ItemTemplate>
        <tr>
          <td>Gesamt</td>
          <td><%# Container.DataItem.Gesamt %></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <asp:Repeater ...>
          <ItemTemplate>
            <tr>
              <td>&nbsp;</td>
              <td><%# Container.DataItem.Kursname %></td>
              <td><%# Container.DataItem.Anzahl %></td>
              <td>Teilnehmer</td>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <asp:Repeater ...>
              <ItemTemplate>
                <tr>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                  <td><%# Container.DataItem.Region %></td>
                  <td><%# Container.DataItem.Anzahl %></td>
                  <td>Teilnehmer</td>
                  <td>&nbsp;</td>
                </tr>
              </ItemTemplate>
            </asp:Repeater ...>
          </ItemTemplate>
        </asp:Repeater ...>
      </ItemTemplate>
    </asp:Repeater ...>
    
    

    Ist auch nicht unbedingt schön, funktioniert dafür aber :)

    Du müsstest dann innerhalb der ItemDataBound Events der einzelnen Repeater die Datenquelle für die inneren Repeater Controls setzen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert sim_n Mittwoch, 20. Oktober 2010 06:47
    Montag, 18. Oktober 2010 10:56
    Moderator
  • Hi,

    danke das bringt mich auf den Richtigen Weg!
    Falls zwischendurch noch Fragen aufkommen weis ich ja wo ich mich melden kann ;)

    Den Syntax innerhalb der Repeater musste ich aber so gestalten:

    <%# DataBinder.Eval(Container.DataItem, "KursName") %>

     

    Gruß sim_n

    Mittwoch, 20. Oktober 2010 06:45