2009-08-21 4 views
3

Я нашел много разных примеров в Интернете, но ничего похожего на то, что мне нужно.ASP.NET расширяемый вид сетки?

У меня есть мнение, что DB создает что-то вроде этого:

 
--------------------------------------------------- 
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 
--------------------------------------------------- 

Но я действительно после того, как-то подытожить все строки от компании, и быть в состоянии расширить для просмотра деталей по мере необходимости.

Аналогично:

 
------------------------------------------------------ 
    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 
------------------------------------------------------ 

Я пытался строить GridView в GridView с плохим результатом.

У меня есть представление, которое генерирует компании и итоговую информацию, если это невозможно сделать с использованием JavaScript, который, как я предполагал, может быть выполнен.

Я просто ищу свободный контроль или какую-то яркую идею в том, как я могу это сделать. Новое для ASP.NET, поэтому может быть что-то простое, что мне не хватает.

Благодаря

ответ

3

Вы могли бы быть лучше удачи с контролем ListView.

Мэтт Берсет has a post об использовании элемента управления ListView для создания этой функции.

+0

Он также имеет сообщения с помощью GridView –

+0

После небольшого манипулирования я получил его, чтобы сделать именно то, что мне нужно. Благодаря! – Jak

+0

Привет, я работаю над тем же с видом сетки. Я хотел бы иметь код, который вы разработали относительно этого, можете ли вы отправить мне письмо. – Dotnet

2

Вот пример с аккордеоном, но вы могли бы использовать что-то другое:

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-за:

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

Мне нравится, как это работало визуально, но мне нужно было иметь возможность развернуть/скомпилировать детали по отдельности. Спасибо, что показали мне это :-) – Jak

Смежные вопросы