//得到表单的HTML
    //pi_isnewdoc 0:新文档  1:旧文档
    //ifhavarole:表单上是否有权限  0:lable输出 1:input输出
    //ifflowdoc:是否流程表单 0:非流程 1:流程
    //curtacheid:当前环节ID,用于判断字段是否在当前环节有权限
    public void GetMainTableHtml(string pi_isnewdoc, string ifhavarole, string ifflowdoc, string curtacheid)
    {
        //////////////////////////////////输出显示字段///////////////////////////////////////
        //得到所有需要显示的字段
        HyoaClass.Hyoa_flowfield Hyoa_flowfield = new HyoaClass.Hyoa_flowfield();
        DataTable dtfield_show = Hyoa_flowfield.Getflowfields_show_bytableid(this.hy_tableid.Text);
        //得到表单配置信息
        HyoaClass.Hyoa_tableconfig Hyoa_tableconfig = new HyoaClass.Hyoa_tableconfig();
        DataTable dt_tableconfig = Hyoa_tableconfig.GetTable(this.hy_tableid.Text);

        int li_tdnums_onerow = int.Parse(dt_tableconfig.Rows[0]["hy_colnum"].ToString());       //一行有几个TD
        int li_tdnums_total = 0;    //所有字段的tdnums总和
        int li_colnums_show = li_tdnums_onerow / 2;
        int li_rows_show = 0;   //一共有几行
        int li_ifaddcols = 0;   //所有列显示完成后,是否需要补齐显示列 0:否 1:是
        int li_addcols = 0;     //需要补齐的列数量

        for (int i = 0; i < dtfield_show.Rows.Count; i++)
        {
            if (dtfield_show.Rows[i]["hy_defaultvaluetype"].ToString() == "5")  //不显示左侧列
            {
                li_tdnums_total += int.Parse(dtfield_show.Rows[i]["hy_tdnums"].ToString());
            }
            else
            {
                li_tdnums_total += int.Parse(dtfield_show.Rows[i]["hy_tdnums"].ToString()) + 1;
            }
        }
        if (li_tdnums_total % li_tdnums_onerow == 0)
        {
            li_rows_show = li_tdnums_total / li_tdnums_onerow;
            li_ifaddcols = 0;
        }
        else
        {
            li_rows_show = (li_tdnums_total / li_tdnums_onerow) + 1;
            li_ifaddcols = 1;
            li_addcols = li_tdnums_onerow - (li_tdnums_total % li_tdnums_onerow);
        }
        int t = 0;                     //dtlistsearch中的记录行数
        int li_tdnums_currows = 0;      //当前行已经输出了多少个TD了
        for (int i = 0; i < li_rows_show; i++)
        {
            TableRow tRow = new TableRow();
            tb_main.Rows.Add(tRow);
            li_tdnums_currows = 0;
            for (int j = 0; j < li_tdnums_onerow; j++)
            {
                //dtlistsearch中的记录行数超出总行数时,结束循环
                if ((t + 1) > dtfield_show.Rows.Count)
                {
                    break;
                }
                //当前行输出的TD列数超出每行的总列数时,结束循环
                if (li_tdnums_currows >= li_tdnums_onerow)
                {
                    break;
                }
                li_tdnums_currows = GetFieldHtml(tRow, li_tdnums_currows, li_colnums_show, dtfield_show.Rows[t]["hy_fieldid"].ToString(), pi_isnewdoc, ifhavarole, ifflowdoc, curtacheid);
                t += 1;
            }
            //如果最后一行的列没有显示完整,则补齐
            if (li_ifaddcols == 1 && i == (li_rows_show - 1))
            {
                for (int k = 0; k < (li_addcols / 2); k++)
                {
                    TableCell tCell8 = new TableCell();
                    tRow.Cells.Add(tCell8);
                    tCell8.Height = Unit.Pixel(30);
                    tCell8.CssClass = "Tdcellleft";
                    tCell8.HorizontalAlign = HorizontalAlign.Center;
                    tCell8.Controls.Add(new LiteralControl("&nbsp;"));
                    TableCell tCell9 = new TableCell();
                    tRow.Cells.Add(tCell9);
                    tCell9.Height = Unit.Pixel(30);
                    tCell9.CssClass = "Tdcellright";
                    tCell9.HorizontalAlign = HorizontalAlign.Center;
                    tCell9.Controls.Add(new LiteralControl("&nbsp;"));
                }
            }
        }

        //////////////////////////////////最后输出隐藏字段///////////////////////////////////////
        //得到所有需要显示的字段
        dtfield_show.Clear();
        dtfield_show = Hyoa_flowfield.Getflowfields_hidden_bytableid(this.hy_tableid.Text);
        li_tdnums_total = 0;    //所有字段的tdnums总和
        li_rows_show = 0;   //一共有几行
        li_ifaddcols = 0;   //所有列显示完成后,是否需要补齐显示列 0:否 1:是
        li_addcols = 0;     //需要补齐的列数量

        for (int i = 0; i < dtfield_show.Rows.Count; i++)
        {
            if (dtfield_show.Rows[i]["hy_defaultvaluetype"].ToString() == "5")  //不显示左侧列
            {
                li_tdnums_total += int.Parse(dtfield_show.Rows[i]["hy_tdnums"].ToString());
            }
            else
            {
                li_tdnums_total += int.Parse(dtfield_show.Rows[i]["hy_tdnums"].ToString()) + 1;
            }
        }
        if (li_tdnums_total % li_tdnums_onerow == 0)
        {
            li_rows_show = li_tdnums_total / li_tdnums_onerow;
            li_ifaddcols = 0;
        }
        else
        {
            li_rows_show = (li_tdnums_total / li_tdnums_onerow) + 1;
            li_ifaddcols = 1;
            li_addcols = li_tdnums_onerow - (li_tdnums_total % li_tdnums_onerow);
        }
        t = 0;                     //dtlistsearch中的记录行数
        li_tdnums_currows = 0;      //当前行已经输出了多少个TD了
        for (int i = 0; i < li_rows_show; i++)
        {
            TableRow tRow = new TableRow();
            tRow.Style.Value = "display:none";
            tb_main.Rows.Add(tRow);
            li_tdnums_currows = 0;
            for (int j = 0; j < li_tdnums_onerow; j++)
            {
                //dtlistsearch中的记录行数超出总行数时,结束循环
                if ((t + 1) > dtfield_show.Rows.Count)
                {
                    break;
                }
                //当前行输出的TD列数超出每行的总列数时,结束循环
                if (li_tdnums_currows >= li_tdnums_onerow)
                {
                    break;
                }
                li_tdnums_currows = GetFieldHtml(tRow, li_tdnums_currows, li_colnums_show, dtfield_show.Rows[t]["hy_fieldid"].ToString(), pi_isnewdoc, ifhavarole, ifflowdoc, curtacheid);
                t += 1;
            }
            //如果最后一行的列没有显示完整,则补齐
            if (li_ifaddcols == 1 && i == (li_rows_show - 1))
            {
                for (int k = 0; k < (li_addcols / 2); k++)
                {
                    TableCell tCell8 = new TableCell();
                    tRow.Cells.Add(tCell8);
                    tCell8.Height = Unit.Pixel(30);
                    tCell8.CssClass = "Tdcellleft";
                    tCell8.HorizontalAlign = HorizontalAlign.Center;
                    tCell8.Controls.Add(new LiteralControl("&nbsp;"));
                    TableCell tCell9 = new TableCell();
                    tRow.Cells.Add(tCell9);
                    tCell9.Height = Unit.Pixel(30);
                    tCell9.CssClass = "Tdcellright";
                    tCell9.HorizontalAlign = HorizontalAlign.Center;
                    tCell9.Controls.Add(new LiteralControl("&nbsp;"));
                }
            }
        }
    }