//得到表单的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(" ")); 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(" ")); } } } //////////////////////////////////最后输出隐藏字段/////////////////////////////////////// //得到所有需要显示的字段 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(" ")); 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(" ")); } } } }