• DataTable数据集动态构造Table表结构 Alec


    功能介绍:

    根据入库单编号和产品编码,获取该入库单中该产品的颜色尺码值,以二维形式显示出来。即把DataTable数据集

     

     

    (图1用以下格式显示出来 (图2

    实现代码:

    前台:

    现在页面中拉一个table控件:

    <asp:Table ID="Table1" runat="server" CssClass="grid" Width="92%" CellPadding="2" CellSpacing="0" style="text-align:center;" GridLines="Both">

    </asp:Table>

    后台:

    DataTable dt = new DataTable();

    DataTable colors = new DataTable();

    DataTable sizes = new DataTable();

    dt = SQLServerDAL.Report.SqlReportMgt.GetColorSizeByCC(billcode, barcode);//获得图1的数据集

    colors = SQLServerDAL.Report.SqlReportMgt.GetColors(billcode, barcode);//获取该订单该产品的颜色集(即【粉红,黑】)

    sizes=SQLServerDAL.Report.SqlReportMgt.GetSizes();//获取所有尺码(即【L,M,S,XL】)

     

    TableRow tr=new TableRow();//

                    TableCell tc=new TableCell();//

                    Label lb;

                    //第一行标题

                    tc.Text = "入库单:" + billcode + " 中产品" + barcode+ " 的信息";

                    tc.Attributes.Add("colspan", "6");

                    tc.Attributes.Add("text-align", "center");

                    tc.Attributes.Add("background", "RGB(192,192,192)");

                    tr.Cells.Add(tc);               

                    Table1.Rows.Add(tr);

                    //第一列颜色列名

                    tr = new TableRow();

                    tr.HorizontalAlign = HorizontalAlign.Center;

                                

                    tc = new TableCell();

                    tc.Text = "?¦?";

                    tr.Cells.Add(tc);

                    //生成表头

                    for (int i = 0; i <= sizes.Rows.Count; i++)

                    {

                        tc = new TableCell();

                        if (i < sizes.Rows.Count)

                        {

                            tc.Text = sizes.Rows[i][0].ToString();

                        }

                        else

                        {

                            tc.Text = "合计";

                        }                  

                        tr.Cells.Add(tc);

                    }

                    Table1.Rows.Add(tr);           

                    for (int i = 0; i < colors.Rows.Count; i++)//颜色

                    {

                        tr = new TableRow();

                        tc = new TableCell();

                        lb = new Label();//记录第一列的颜色值

                        lb.Text = colors.Rows[i][0].ToString();

                        tc.Controls.Add(lb);

                        tr.Cells.Add(tc);

                        int total = 0;//记录合计

                        for (int j = 0; j < sizes.Rows.Count; j++)//尺码

                        {

                            tc = new TableCell();

                            lb = new Label();

                            //给每一个单元格附一个label控件

                            lb.ID ="lbl_"+ colors.Rows[i][0].ToString() + sizes.Rows[j][0].ToString();//形如粉红S”“粉红M”

                            for (int t = 0; t < dt.Rows.Count; t++)//遍历数据集

                            {

                                if (dt.Rows[t][2].ToString() == colors.Rows[i][0].ToString() &&

                                    dt.Rows[t][3].ToString() == sizes.Rows[j][0].ToString())

                                {

                                    lb.Text = dt.Rows[t][4].ToString();

                                    total = total + Convert.ToInt32(lb.Text);//合计累加

                                }

                            }

                            tc.Controls.Add(lb);

                            tc.Attributes.Add("text-align", "center");

                            tr.Cells.Add(tc);

                        }

                        lb = new Label();//定义合计列

                        tc = new TableCell();

                        lb.ID = "lbl_" + colors.Rows[i][0].ToString() + "合计";

                        lb.Text = total.ToString();

                        tc.Controls.Add(lb);

                        tr.Cells.Add(tc);

                        Table1.Rows.Add(tr);

                    }

     

    说明:

    1. 生成时只能一行一行的生成

    2. 生成行列时,先给行、列分别一个实例化变量,即tr = new TableRow();                    tc = new TableCell();,再实例化一个label控件:lb = new Label();设置label的文本,然后把label加入到列tc中:tc.Controls.Add(lb);,然后把列加入到行中:tr.Cells.Add(tc);,最后把行加入到table中:Table1.Rows.Add(tr);

    3. 反复第2步,定义每一行内容。

     

     

  • 相关阅读:
    <<信息学奥赛一本通>> 昆虫养殖 题解
    C++ primer 第七章 练习7.35 类作用域练习
    C++ primer 第六章 练习6.56 函数指针练习
    P1145 约瑟夫
    C++ 查看auto delctype 后变量的类型。(小技巧)
    Educational Codeforces Round 24 题解
    HDU 5279 分治NTT 图的计数
    BZOJ 3473
    BZOJ 3514 LCT+主席树
    看无可看 分治FFT+特征值方程
  • 原文地址:https://www.cnblogs.com/yinluhui0229/p/2124180.html
Copyright © 2020-2023  润新知