ASP.NET расширяемый вид сетки? - PullRequest
       3

ASP.NET расширяемый вид сетки?

3 голосов
/ 22 августа 2009

Я нашел много разных примеров в интернете, но, кажется, ничто не помогает мне.

У меня есть представление БД, которое генерирует что-то вроде этого:

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

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

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

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 22 августа 2009

Возможно, вам повезет больше с элементом управления ListView .

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

2 голосов
/ 22 августа 2009

Вот пример с Аккордеоном, но вы можете использовать что-то еще:

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>

Код-за:

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();

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...