首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

.NET 動態產生二維表格程式碼

     編輯:關於ASP.NET

分享一段在 .NET 中動態產生二維交叉表格的完整程式碼,適用於報表呈現需求。

核心邏輯

  1. 取得資料來源 DataTable
  2. 使用 ArrayList 收集不重複的列標題與行標題
  3. 使用 Hashtable 以「列:行」為鍵儲存資料值
  4. 動態建立 Table、TableRow、TableCell 控制項
  5. 依序產生表頭、資料列

完整程式碼

void Page_Load(object o, EventArgs e)
{
    DataTable dt = GetData();
    string sSeparator = ":";
    ArrayList alDept = new ArrayList();
    ArrayList alMonth = new ArrayList();
    Hashtable ht = new Hashtable();

    foreach (DataRow dr in dt.Rows)
    {
        string sDept = dr["c"].ToString();
        string sMonth2 = dr["p"].ToString();
        string sMonth = GetData2(sMonth2);
        if (!alDept.Contains(sDept)) alDept.Add(sDept);
        if (!alMonth.Contains(sMonth)) alMonth.Add(sMonth);
        ht[sDept + sSeparator + sMonth] = dr["a"];
    }

    TableRow tr = new TableRow();
    foreach (string sDept in alDept)
    {
        int i = 0;
        foreach (string sMonth in alMonth)
        {
            if (ht[sDept + sSeparator + sMonth] == null)
                i += 0;
            else
                i += int.Parse(ht[sDept + sSeparator + sMonth].ToString());
        }
        TableCell tc = new TableCell();
        tc.Text = sDept + "(" + i + ")";
        tr.Cells.Add(tc);
    }
    Table1.Rows.Add(tr);

    foreach (string sMonth in alMonth)
    {
        tr = new TableRow();
        foreach (string sDept in alDept)
        {
            TableCell tc = new TableCell();
            if (ht[sDept + sSeparator + sMonth] == null)
                tc.Text = sMonth + "(0)";
            else
                tc.Text = sMonth + "(" + ht[sDept + sSeparator + sMonth].ToString() + ")";
            tr.Cells.Add(tc);
        }
        Table1.Rows.Add(tr);
    }
}

public DataTable GetData()
{
    StatisticsB stat = new StatisticsB();
    DataSet dataset = stat.byStone();
    return dataset.Tables["stat"];
}

public string GetData2(string statid)
{
    StatisticsB stat = new StatisticsB();
    return stat.changeToName(statid);
}

此範例展示如何將平坦資料轉換為交叉表格呈現,可依實際需求調整欄位與樣式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved