【问题标题】:Add row for totals at the end of each table在每个表的末尾添加总计行
【发布时间】:2013-05-25 00:49:10
【问题描述】:

我希望为每个位置添加一行,如下图所示。该行将显示每列的总数。我已经计算了这些值( , , )只需要将它们放置在正确的位置,我似乎无法按照我想要的方式格式化它.

目前看起来是这样的:

我希望它看起来像这样:

我的 ASPX 页面

<form id="form1" runat="server">
<div class="container">
    <div class="page-header">
        <h1>
            Report</h1>
        <br />
        <div class="row">
            <div class="span11">
                <% 
                    System.Data.OleDb.OleDbConnection pcn;
                    System.Data.OleDb.OleDbCommand pcm;
                    System.Data.OleDb.OleDbDataReader prs;
                    pcn = new System.Data.OleDb.OleDbConnection("");
                    pcm = new System.Data.OleDb.OleDbCommand();
                    pcn.Open();
                    pcm.Connection = pcn;

                    var tableSql = @"SELECT * FROM Accounts";

                    pcm.CommandText = tableSql;
                    prs = pcm.ExecuteReader();
                    var rowcount = 0;
                    var CurrentLocation = "";
                    while (prs.Read())
                    {
                        rowcount++;

                %>
                <% if (prs["Location"].ToString() != CurrentLocation)
                   { %>
                <table width="100%" class="table">
                    <thead>
                        <tr>
                            <th>
                                Name
                            </th>
                            <th>
                                Owes
                            </th>
                            <th>
                                Paid
                            </th>
                            <th>
                                Original Amt
                            </th>
                            <th>
                                Date
                            </th>
                        </tr>
                    </thead>

                    <h4>
                        <%= prs["Location"].ToString()%></h4>

                    <% 
                        CurrentBranch = prs["Loction"].ToString();
                   } %>
                    <tr>
                        <td>
                            <%= prs["Name"].ToString() %>
                        </td>
                        <td>
                            $<%= prs["Owes"].ToString() %>
                        </td>
                        <td>
                            $<%= prs["Paid"].ToString() %>
                        </td>
                        <td>
                            $<%= prs["OrigAmt"].ToString() %>
                        </td>
                        <td>
                            <%= Convert.ToDateTime(prs["SubmitDate"].ToString()).ToShortDateString() %>
                        </td>

                    </tr>
                    <%
                        }
                    prs.Close();
                    pcn.Close();
                    %>
                </table>
            </div>
        </div>
    </div>
</div>
</form>

【问题讨论】:

  • 您在 aspx 页面中嵌入所有代码以执行此操作的任何特殊原因?通常当我看到这个时,这是一个坏主意......
  • 同意。我建议将所有的 asp 代码放在 .cs 文件中,并使用诸如 GridView 之类的控件来显示数据。
  • 这是一份只有两个人的小报告,这是我知道的唯一方法,它会按位置分开。我不想制作四个不同的网格视图(也许有办法不必这样做)。
  • 如果您仍要走这条路,我建议您制作 4 张不同的桌子,而不是一张大桌子。此外,您可以在不同的位置进行 foreach 并以这种方式将其分开。您可以根据 SQL 中的位置获取总计列表。然后,在您写完为某个位置返回的所有行之后,您可以在底部写一个额外的表格行,其中包含总数据。我认为这样做可能比使用网格视图更难。
  • @Tony 感谢您的输入 Tony,我会考虑将其转换为几个不同的网格视图。

标签: c# html-table


【解决方案1】:

在您的 SQL 语句中,添加

UNION SELECT 'Totals', sum(Owes), sum (Paid), sum(OrigAmt), '' FROM Accounts

【讨论】:

  • 我知道如何得到总数我只是不知道如何将它们放在每张桌子下面。
【解决方案2】:

您最好在控制器的 Page_Load 处理程序中执行此操作。向每个表添加新行并将您的总计值放在那里。并写下这个:

foreach(var column in table.Columns)
{
    foreach(var field in column)
    {
        //check if it isn't last row
        //write the sum of (0..n-1) fields to lsat field in column
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多