2009-08-21 15 views
3

J'ai trouvé beaucoup d'exemples différents sur internet, mais rien ne semble faire ce que je veux.ASP.NET une vue de grille extensible?

J'ai une vue DB qui génère quelque chose comme ceci:

 
--------------------------------------------------- 
Company | Code | Total | Available | Used | Needed 
--------------------------------------------------- 
One  | 1 | 10 |  8  | 2 | 3 
One  | 2 | 5 |  5  | 0 | 5 
Two  | 1 | 5 |  2  | 3 | 0 
Two  | 2 | 8 |  4  | 4 | 9 
Two  | 3 | 0 |  0  | 0 | 0 
--------------------------------------------------- 

Mais je suis vraiment après quelque chose de résumer toutes les lignes de la société, et être en mesure d'élargir pour afficher les détails au besoin.

similaires à:

 
------------------------------------------------------ 
    Company  | Total | Available | Used | Needed 
------------------------------------------------------ 
[+] One   | 15 |  13 | 2 | 8 
------------------------------------------------------ 
[-] Two  Code | 13 |  6  | 7 | 9 
------------------------------------------------------ 
      | 1 | 5 |  2  | 3 | 0 
      | 2 | 8 |  4  | 4 | 9 
      | 3 | 0 |  0  | 0 | 0 
------------------------------------------------------ 

J'ai essayé la construction d'un gridview dans un GridView pour mauvais résultat.

J'ai une vue qui génère les compagnies et les informations récapitulatives si cela ne peut pas être fait avec JavaScript, ce qui est la manière dont j'ai supposé que cela pouvait être fait.

Je suis juste à la recherche d'un contrôle gratuit ou une idée brillante de la façon dont je peux accomplir autrement cela. Nouveau sur ASP.NET donc il pourrait y avoir quelque chose de simple qui me manque.

Merci

Répondre

3

Vous pourriez avoir plus de chance avec le contrôle ListView.

Matt Berseth has a post sur l'utilisation du contrôle ListView pour créer cette fonctionnalité.

+0

Il a aussi des postes à l'aide du GridView –

+0

Après un peu de manipulation, je l'ai fait pour faire exactement ce dont j'avais besoin. Merci! – Jak

+0

Salut Jak je travaille sur la même chose avec grille vue je voudrais avoir le code que vous avez travaillé à ce sujet pouvez-vous m'envoyer un mail – Dotnet

2

Voici un exemple avec un accordéon, mais vous pouvez utiliser quelque chose d'autre:

Markup:

<ajax:Accordion ID="Accordion1" runat="Server" 
    SelectedIndex="0" 
    HeaderCssClass="accordionHeader" 
    HeaderSelectedCssClass="accordionHeaderSelected" 
    ContentCssClass="accordionContent" 
    AutoSize="None" FadeTransitions="true" 
    TransitionDuration="250" FramesPerSecond="40" 
    RequireOpenedPane="false" SuppressHeaderPostbacks="true"> 
    <HeaderTemplate><%# Eval("Key")%></HeaderTemplate> 
    <ContentTemplate> 
    <asp:ListView runat="server" ID="MyListView" DataSource='<%# Eval("Values") %>'> 
     <LayoutTemplate> 
      <table style="width:75%"> 
       <tr> 
        <th>Code</th> 
        <th>Total</th> 
       </tr> 
       <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
       <td><%# Eval("Code")%></td> 
       <td><%# Eval("Total")%></td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 

    </ContentTemplate> 
</ajax:Accordion> 
code-behind

:

public class Company 
{ 
    public string CompanyName; 
    public int Code, Total; 
    public Company(string company, int code, int total) 
    { 
     this.CompanyName = company; this.Code = code; 
     this.Total = total; 
    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     var Companies = new Company[] { 
      new Company("One", 1, 10), 
      new Company("Two", 1, 5), 
      new Company("Two", 2, 8) 
     }; 

     Accordion1.DataSource = Companies 
      .GroupBy(c => c.CompanyName, c => new { Code = c.Code, Total = c.Total }, 
      (k, enumerable) => new { Key = k, Values = enumerable }); 
     Accordion1.DataBind(); 

    } 
} 
+0

J'aime comment cela a fonctionné visuellement, mais je devais être capable de développer/contracter des pièces individuellement. Merci de m'avoir montré ceci :-) – Jak

Questions connexes