Exemple #1
0
        /// <summary>
        /// 根据从表数据创建控件,设置样式,并添加至table
        /// </summary>
        /// <param name="objSubList"></param>
        public void CreateSubList(ObjSubList[] objSubList, ObjBill bill)
        {
            if (null != objSubList && objSubList.Length > 0)
            {
                int dgID = 1;
                foreach (ObjSubList subList in objSubList)
                {
                    //如果是空行则退出
                    if (subList.RowList.Length == 0)
                    {
                        continue;
                    }
                    //DataTable dt = subList.GetDataTable();
                    #region Verticle
                    if (subList.Align == "verticle")
                    {
                        if (null != subList.ColumnList && subList.ColumnList.Length > 0)
                        {
                            {
                                HtmlTableRow tr = new HtmlTableRow();
                                HtmlTableCell td = CreateTD(1, null, null, "billTopTd");

                                Label label = new Label();
                                label.Text = subList.Text;
                                td.Controls.Add(label);

                                tr.Controls.Add(td);
                                TableCtrl.Controls.Add(tr);
                            }
                            HtmlTable tbSubList = new HtmlTable();
                            tbSubList.Width = "100%";
                            tbSubList.BgColor = "#999999";
                            tbSubList.Border = 0;
                            tbSubList.CellSpacing = 1;
                            tbSubList.CellPadding = 3;
                            foreach (ObjRow row in subList.RowList)
                            {
                                int n = 0;
                                HtmlTableRow tr = null;
                                int columncount = 0;
                                foreach (ObjColumn column in subList.ColumnList[0].ColumnList)
                                {
                                    if (column.IsVisible)
                                    { columncount++; }
                                }
                                string name = "";
                                foreach (ObjColumn column in subList.ColumnList[0].ColumnList)
                                {
                                    if (column.IsVisible)
                                    {
                                        if (n == 0)
                                        {
                                            tr = new HtmlTableRow();
                                            HtmlTableCell td = new HtmlTableCell();
                                            td.InnerText = row.GetObjFieldValue(column.Name);
                                            name = td.InnerText;
                                            td.BgColor = "white";
                                            td.Width = "25%";
                                            td.RowSpan = columncount - 1;
                                            td.Align = "center";
                                            td.Style.Add("font-size", "14px");
                                            td.Style.Add("font-weight", "bold");
                                            tr.Cells.Add(td);
                                        }
                                        else
                                        {
                                            if (n > 1)
                                            {
                                                tr = new HtmlTableRow();
                                            }
                                            HtmlTableCell td = new HtmlTableCell();
                                            td.InnerText = column.Text;
                                            td.BgColor = "#f1f1f1";
                                            td.Width = "25%";
                                            tr.Cells.Add(td);

                                            HtmlTableCell tdcontent = new HtmlTableCell();
                                            tdcontent.InnerText = row.GetObjFieldValue(column.Name);
                                            tdcontent.BgColor = "white";
                                            tdcontent.Width = "25%";

                                            tr.Cells.Add(tdcontent);

                                            if (n == 1)
                                            {
                                                HtmlTableCell tdview = new HtmlTableCell();
                                                HtmlTable tbDetail = new HtmlTable();
                                                tbDetail.Width = "100%";
                                                tbDetail.BgColor = "#999999";
                                                tbDetail.Border = 0;
                                                tbDetail.CellSpacing = 1;
                                                tbDetail.CellPadding = 3;


                                                HtmlTableRow trDetail1 = new HtmlTableRow();
                                                HtmlTableCell tdDetail1 = new HtmlTableCell();
                                                tdDetail1.Align = "left";
                                                tdDetail1.BgColor = "#e1e1e1";
                                                tdDetail1.Style.Add("font-weight", "bold");
                                                tdDetail1.InnerHtml = name + "薪资详情";
                                                tdDetail1.Height = "35";
                                                trDetail1.Cells.Add(tdDetail1);

                                                HtmlTableCell tdDetail4 = new HtmlTableCell();
                                                tdDetail4.Align = "right";
                                                tdDetail4.BgColor = "#e1e1e1";
                                                tdDetail4.Style.Add("font-weight", "bold");
                                                tdDetail4.InnerHtml = @"<input type=""button"" value=""关闭"" onclick=""javascript:closeDetail();"" onmousemove=""javascript:MousemoveAudit(this.id);""

                                    onmouseout=""javascript:MouseoutAudit(this.id);"" id=""btn_close"" name=""btn_close"" class=""billAuditYes"" />";
                                                tdDetail4.Height = "35";
                                                trDetail1.Cells.Add(tdDetail4);


                                                tbDetail.Rows.Add(trDetail1);

                                                foreach (ObjColumn detailcolumn in subList.ColumnList[0].ColumnList)
                                                {
                                                    HtmlTableRow trDetail2 = new HtmlTableRow();
                                                    HtmlTableCell tdDetail2 = new HtmlTableCell();
                                                    tdDetail2.Align = "left";
                                                    tdDetail2.Width = "50%";
                                                    tdDetail2.BgColor = "#f1f1f1";
                                                    tdDetail2.InnerHtml = detailcolumn.Text;
                                                    trDetail2.Cells.Add(tdDetail2);

                                                    HtmlTableCell tdDetail3 = new HtmlTableCell();
                                                    tdDetail3.Align = "left";
                                                    tdDetail2.Width = "50%";
                                                    tdDetail3.BgColor = "#ffffff";
                                                    tdDetail3.InnerHtml = row.GetObjFieldValue(detailcolumn.Name);
                                                    trDetail2.Cells.Add(tdDetail3);


                                                    tbDetail.Rows.Add(trDetail2);
                                                }
                                                tdview.RowSpan = columncount - 1;
                                                tdview.InnerHtml = "<a href=\"javascript:showDetail('virdetail" + row.Id + "')\">详请</a>";
                                                HtmlGenericControl div = new HtmlGenericControl();
                                                div.TagName = "div";
                                                div.Style.Add("display", "none");
                                                div.ID = "virdetail" + row.Id;
                                                div.Controls.Add(tbDetail);
                                                tdview.Controls.Add(div);
                                                tdview.BgColor = "white";
                                                tdview.Width = "25%";
                                                tdview.Align = "center";
                                                tr.Cells.Add(tdview);
                                            }
                                        }

                                        if (n > 0)
                                        {
                                            tbSubList.Rows.Add(tr);
                                        }
                                        n++;
                                    }

                                }
                            }
                            {
                                int n = 0;
                                HtmlTableRow tr = null;
                                int columncount = 0;
                                foreach (Field field in bill.DetailLists[0].GetFieldDict())
                                {
                                    if (!String.IsNullOrEmpty(field.ColumnOrder) && Convert.ToInt32(field.ColumnOrder) > 0)
                                    {
                                        columncount++;
                                    }
                                }
                                foreach (Field field in bill.DetailLists[0].GetFieldDict())
                                {

                                    if (!String.IsNullOrEmpty(field.ColumnOrder) && Convert.ToInt32(field.ColumnOrder) > 0)
                                    {
                                        if (n == 0)
                                        {
                                            tr = new HtmlTableRow();
                                            HtmlTableCell td = new HtmlTableCell();
                                            td.InnerText = "总计";
                                            td.BgColor = "white";
                                            td.Width = "25%";
                                            td.RowSpan = columncount;
                                            td.Align = "center";
                                            td.Style.Add("font-size", "14px");
                                            td.Style.Add("font-weight", "bold");
                                            td.Style.Add("border-top", "1px black solid");
                                            tr.Cells.Add(td);


                                        }

                                        {
                                            if (n > 0)
                                            {
                                                tr = new HtmlTableRow();
                                            }
                                            HtmlTableCell td = new HtmlTableCell();
                                            td.InnerText = field.CaptionName.TrimEnd(':');
                                            td.BgColor = "#f1f1f1";
                                            td.Width = "25%";
                                            if (n == 0)
                                            {
                                                td.Style.Add("border-top", "1px black solid");
                                            }
                                            tr.Cells.Add(td);

                                            HtmlTableCell tdcontent = new HtmlTableCell();
                                            tdcontent.Controls.Add((Control)field.MainControl[0]);
                                            tdcontent.BgColor = "white";
                                            tdcontent.Width = "25%";
                                            if (n == 0)
                                            {
                                                tdcontent.Style.Add("border-top", "1px black solid");


                                            }
                                            tr.Cells.Add(tdcontent);

                                            if (n == 0)
                                            {
                                                HtmlTableCell tdview = new HtmlTableCell();
                                                tdview.InnerHtml = "&nbsp;";
                                                tdview.BgColor = "white";
                                                tdview.Width = "25%";
                                                tdview.Align = "center";
                                                tdview.RowSpan = columncount;
                                                if (n == 0)
                                                {
                                                    tdview.Style.Add("border-top", "1px black solid");
                                                }
                                                tr.Cells.Add(tdview);
                                            }

                                        }

                                        //if (n > 0)
                                        {
                                            tbSubList.Rows.Add(tr);
                                        }
                                        n++;
                                    }

                                }
                            }

                            HtmlTableRow tra = new HtmlTableRow();
                            HtmlTableCell tda = CreateTD(1, "100%", null, null);
                            tda.Controls.Add(tbSubList);
                            tra.Cells.Add(tda);
                            TableCtrl.Rows.Add(tra);
                        }
                    }
                    #endregion
                    else
                    {
                        if (null != subList.ColumnList && subList.ColumnList.Length > 0)
                        {
                            if (subList.RowList.Length == 0)
                            {
                                continue;
                            }
                            if (subList.RowList[0] == null)
                            {
                                continue;
                            }
                            if (subList.HideWhenEmpty == "1" && subList.CheckEmpty())
                            {
                                continue;
                            }
                            {
                                //HtmlTableRow tr = new HtmlTableRow();
                                //HtmlTableCell td = CreateTD(1, null, null, "billTopTd");

                                //Label label = new Label();
                                //label.Text = subList.Text;
                                //td.Controls.Add(label);

                                //tr.Controls.Add(td);
                                //TableCtrl.Controls.Add(tr);
                                //从表头
                                HtmlGenericControl DivTop = new HtmlGenericControl("div");
                                DivTop.Attributes.Add("class", "tabpanelheaddiv");
                                HtmlGenericControl span = new HtmlGenericControl("span");
                                span.Attributes.Add("style", "height:30px;line-height:30px;");
                                span.InnerText = subList.Text;
                                DivTop.Controls.Add(span);

                                HtmlTableRow tr = new HtmlTableRow();
                                HtmlTableCell td = CreateTD(1, null, null, "");
                                td.Attributes.Add("style", "padding:3px 0px 0px 0px;margin:0px;");
                                td.Controls.Add(DivTop);
                                tr.Controls.Add(td);
                                TableCtrl.Controls.Add(tr);
                            }
                            {
                                HtmlTable tbSubList = new HtmlTable();
                                tbSubList.Width = "100%";
                                tbSubList.BgColor = "#999999";
                                tbSubList.Border = 0;
                                tbSubList.CellSpacing = 1;
                                tbSubList.CellPadding = 3;
                                tbSubList.Attributes.Add("class", "audit ClassTableNew MobileTabGrid");
                                //tbSubList.Attributes.Add("style", "border: 1px solid #5F5F5F;");
                                HtmlTableRow tr = new HtmlTableRow();
                                tr.Attributes.Add("class", "auditHeader");
                                {
                                    
                                    HtmlTableCell td = new HtmlTableCell("th");
                                    td.Attributes.Add("style", "padding:3px 0px 0px 0px;margin:0px;");
                                    td.InnerHtml = "<div></div>";
                                    //td.BgColor = "#E1EFF7";
                                    td.Width = "3%";
                                    tr.Cells.Add(td);
                                }
                                double sum = 0;
                                bool isSum = false;
                                string sumName = string.Empty;
                                List<string> sumList = new List<string>();
                                HtmlTableRow sumRow = new HtmlTableRow();
                                var sumTD = new HtmlTableCell() { InnerText = "" };
                                sumTD.Attributes.Add("class", "Align_Right");
                                sumRow.Cells.Add(sumTD);

                                sumRow.Attributes.Add("class", "ClassTableNewSum");
                                int cellIndex = 1;
                                int cellCols = 0;
                                int cellColsOut = 0;
                                foreach (ObjColumn column in subList.ColumnList[0].ColumnList)
                                {
                                    if (column.IsVisible)
                                    {
                                        HtmlTableCell td = new HtmlTableCell("th");
                                        td.Attributes.Add("Title",column.ToolTip);
                                        td.InnerHtml = "<div>" + column.Text + "</div>";
                                        // td.Attributes.Add("class", "ui-state-default ui-th-column ui-th-ltr");
                                        // td.BgColor = "#E1EFF7";
                                        td.Width = column.Width;
                                        tr.Cells.Add(td);
                                        if (column.ColumnSum != null)
                                        {
                                            if (column.ColumnSum.ToLower() == "true")
                                            {
                                                sumName = column.Name;
                                                isSum = true;
                                                cellCols++;
                                                cellColsOut = 1;
                                                sumList.Add(column.Name);
                                            }
                                            else
                                            {
                                                cellCols = 0;
                                            }
                                        }
                                        else
                                        {
                                            cellCols = 0;
                                        }
                                        cellIndex++;
                                        if (cellCols > 1)
                                        {
                                            sumRow.Cells[sumRow.Cells.Count - 1].ColSpan = (cellIndex - sumRow.Cells.Count) + 1;
                                        }
                                        else
                                        {
                                            sumRow.Cells.Add(new HtmlTableCell() { InnerText = "" });
                                        }

                                       
                                    }

                                }
                                tbSubList.Rows.Add(tr);
                                int i = 0;
                                bool hassub = false;
                                foreach (ObjRow row in subList.RowList)
                                {
                                    //忽略空行
                                    if (row == null)
                                    {
                                        continue;
                                    }

                                    HtmlTableRow trcontent = new HtmlTableRow();
                                    trcontent.Attributes.Add("class", "auditRow");
                                    {
                                        HtmlTableCell td = new HtmlTableCell();
                                        if (row.SubSubList != null && row.SubSubList.Length > 0)
                                        {
                                            td.InnerHtml = "<img src='" + this.Template.ImageUrl + "plus.gif' id='subimg" + i + "'>";
                                            td.RowSpan = 1;
                                            td.ID = "tdsub" + i;

                                        }
                                        else
                                        {
                                            td.InnerHtml = "&nbsp;";
                                            td.RowSpan = 1;
                                            td.ID = "tbsub" + i;
                                        }
                                        td.Align = "center";
                                        td.VAlign = "top";
                                        td.BgColor = "white";
                                        td.Width = "3%";
                                        trcontent.Cells.Add(td);
                                    }
                                    if (row.SubSubList != null && row.SubSubList.Length > 0)
                                    {
                                        trcontent.Attributes.Add("onclick", @"showsub(""tr" + i + @""",""subimg" + i + @""",""tdsub" + i + @""")");
                                    }
                                    int rowIndex = 1;
                                    cellIndex = 1;
                                    foreach (ObjColumn column in subList.ColumnList[0].ColumnList)
                                    {
                                        if (column.IsVisible)
                                        {
                                            HtmlTableCell tdcontent = new HtmlTableCell();
                                            
                                            ObjField field = row.GetObjFieldDict()[column.Name];
                                            if ( field != null)
                                            {
                                                string rowValue = field.DataValue;
                                                var tempValue = rowValue;
                                                if (!string.IsNullOrEmpty(column.Format))
                                                {
                                                    tempValue = field.GetFormatValue(column.Format);
                                                }
                                                tdcontent.InnerText = tempValue;
                                                

                                                if (!string.IsNullOrEmpty(field.Color))
                                                {
                                                    tdcontent.Style.Add("color", field.Color);
                                                }
                                                if (!string.IsNullOrEmpty(field.Tooltip))
                                                {
                                                    tdcontent.Attributes.Add("title", field.Tooltip);
                                                }
                                                var align = "Left";
                                                if (!string.IsNullOrEmpty(column.Align))
                                                {
                                                    align = column.Align;
                                                }
                                                tdcontent.Attributes.Add("class", "Align_" + align);
                                                if (isSum)
                                                {
                                                    if (sumList.Contains(column.Name))
                                                    {
                                                        double tryValue = 0;
                                                        if (double.TryParse(rowValue, out tryValue))
                                                        {
                                                            sum += tryValue;
                                                        }
                                                        sumRow.Cells[cellIndex].InnerText = string.Format("合计:{0}", sum);
                                                    }
                                                    else
                                                    {
                                                        cellIndex++;
                                                    }

                                                }
                                            }
                                            tdcontent.BgColor = "white";
                                            trcontent.Cells.Add(tdcontent);
                                           
                                            rowIndex++;
                                        }

                                    }
                                    tbSubList.Rows.Add(trcontent);
                                    #region 如果有嵌套的明细数据
                                    //如果有嵌套的明细数据
                                    if (row.SubSubList != null && row.SubSubList.Length > 0)
                                    {
                                        hassub = true;
                                        foreach (ObjSubList subsubList in row.SubSubList)
                                        {
                                            HtmlTable tbSubSubList = new HtmlTable();
                                            tbSubSubList.Width = "100%";
                                            tbSubSubList.BgColor = "#999999";
                                            tbSubSubList.Border = 0;
                                            tbSubSubList.CellSpacing = 1;
                                            tbSubSubList.CellPadding = 3;
                                            tbSubSubList.Attributes.Add("style", "margin: 5px 2%;width: 96%;");
                                            HtmlTableRow trSub = new HtmlTableRow();
                                            //设置DataGrid控件的列
                                            foreach (ObjColumn column in subsubList.ColumnList[0].ColumnList)
                                            {
                                                if (column.IsVisible)
                                                {
                                                    
                                                    HtmlTableCell tdsub = new HtmlTableCell("th");
                                                    tdsub.Attributes.Add("Title", column.ToolTip);
                                                    tdsub.InnerText = column.Text;
                                                    tdsub.BgColor = "#E1EFF7";
                                                    tdsub.Width = column.Width;
                                                    trSub.Cells.Add(tdsub);
                                                }

                                            }
                                            tbSubSubList.Rows.Add(trSub);
                                            foreach (ObjRow rowsub in subsubList.RowList)
                                            {
                                                HtmlTableRow trcontentsub = new HtmlTableRow();
                                                foreach (ObjColumn column in subsubList.ColumnList[0].ColumnList)
                                                {
                                                    if (column.IsVisible)
                                                    {
                                                        HtmlTableCell tdcontent = new HtmlTableCell();
                                                        tdcontent.InnerText = rowsub.GetObjFieldValue(column.Name);
                                                        tdcontent.BgColor = "white";
                                                        trcontentsub.Cells.Add(tdcontent);
                                                    }

                                                }

                                                tbSubSubList.Rows.Add(trcontentsub);
                                            }
                                            HtmlTableRow trsubsub = new HtmlTableRow();
                                            trsubsub.ID = "tr" + i;
                                            trsubsub.Style.Add("display", "none");
                                            HtmlTableCell tdsubsub = CreateTD(1, "100%", null, null);
                                            tdsubsub.BgColor = "#dddddd";
                                            tdsubsub.ColSpan = subList.ColumnList[0].ColumnList.Count(item => item.IsVisible);
                                            tdsubsub.Controls.Add(tbSubSubList);
                                            trsubsub.Cells.Add(tdsubsub);
                                            tbSubList.Rows.Add(trsubsub);
                                        }

                                    }
                                    #endregion
                                    if (hassub == false)
                                    {
                                        //tbSubList.Rows[0].Cells[0].Visible = false;
                                        //trcontent.Cells[0].Visible = false;
                                    }
                                    i++;
                                }

                                HtmlTableRow tra = new HtmlTableRow();
                                HtmlTableCell tda = CreateTD(1, "100%", null, null);
                                tda.Attributes.Add("style", "margin:0px;padding:3px 0px 1px 0px;");
                                //添加合计
                                if (isSum)
                                {
                                    tbSubList.Rows.Add(sumRow);
                                }
                                tda.Controls.Add(tbSubList);
                                tra.Cells.Add(tda);
                                TableCtrl.Rows.Add(tra);

                            }

                        }

                    }





                    dgID++;
                }
            }

        }
Exemple #2
0
        public static ObjSubList[] CreateSubList(XmlNode nodeObject, string listName, ObjBill schemaBill, bool isSub)
        {
            //选取ObjectList节点
            XmlNodeList listList = nodeObject.SelectNodes("ObjectList");

            //根据节点数建立实体集
            ObjSubList[] sublists = new ObjSubList[listList.Count];
            //遍历结点
            for (int j = 0; j < listList.Count; j++)
            {
                //从该结点获取一个ObjectList的Name
                string subListName = ((XmlElement)listList[j]).GetAttribute("Name");
                string subListText = ((XmlElement)listList[j]).GetAttribute("Text");
                //建立Sublist对象
                ObjSubList objSubList = new ObjSubList();
                objSubList.Name = subListName;
                objSubList.Text = subListText;
                var temp = schemaBill.GetSubListsDict()[subListName];
                if (temp != null)
                {
                    objSubList.Align         = temp.Align;
                    objSubList.HideWhenEmpty = temp.HideWhenEmpty;
                }

                //把billschema的columnList的信息赋给bill

                //从该结点中获取Object节点集,对应Sublist的行数据
                XmlNodeList objlist = listList[j].SelectNodes("Object");
                //根据xml数据中的object节点数建立sublist对象的rowlist数组
                objSubList.RowList = new ObjRow[objlist.Count];
                //遍历 object节点集,以构建数据
                for (int i = 0; i < objlist.Count; i++)
                {
                    //得到object的name
                    string rowName = ((XmlElement)objlist[i]).GetAttribute("Name");
                    string rowID   = ((XmlElement)objlist[i]).GetAttribute("id");
                    if (string.IsNullOrEmpty(rowID))
                    {
                        //  continue;
                    }
                    //从object结点中得到所有的attribute,即该行的所有字段
                    XmlNodeList list = objlist[i].SelectNodes("Attribute");
                    //建立对应的objrow对象以容纳字段数据
                    ObjRow row = new ObjRow();
                    row.Name = rowName;
                    row.Id   = rowID;
                    //根据attribut的数量建立fieldlist数组
                    row.ObjFieldList = new ObjField[list.Count];
                    //遍历attribute结点
                    for (int m = 0; m < list.Count; m++)
                    {
                        //从attribute节点中得到数据信息
                        XmlElement node      = list[m] as XmlElement;
                        string     Name      = ((XmlElement)node).GetAttribute("Name");
                        string     Text      = ((XmlElement)node).GetAttribute("Text");
                        string     DataType  = ((XmlElement)node).GetAttribute("DataType");
                        string     DataValue = ((XmlElement)node).GetAttribute("DataValue");

                        //建立对应的objfield对象
                        ObjField dataField = new ObjField();
                        dataField.Name = Name;
                        //dataField.Text = Text;
                        dataField.DataType  = DataType;
                        dataField.DataValue = DataValue;
                        string fgColor = string.Empty;
                        string Tooltip = string.Empty;
                        if (node.HasAttribute("Color"))
                        {
                            fgColor = node.GetAttribute("Color");
                        }
                        if (node.HasAttribute("Tooltip"))
                        {
                            Tooltip = node.GetAttribute("Tooltip");
                        }
                        dataField.Color   = fgColor;
                        dataField.Tooltip = Tooltip;


                        //如果能够在配置文件中找到对应的定义项,则把该定义项的相关信息赋值到该对象。
                        //通过Name作为key进行过索引
                        if (schemaBill.GetSubListsDict()[subListName] != null && schemaBill.GetSubListsDict()[subListName].GetRowDict()[rowID] != null && schemaBill.GetSubListsDict()[subListName].GetRowDict()[rowID].GetObjFieldDict()[Name] != null)
                        {
                            ObjField schemaField = schemaBill.GetSubListsDict()[subListName].GetRowDict()[rowID].GetObjFieldDict()[Name];
                            dataField.Colspan     = schemaField.Colspan;
                            dataField.IsVisible   = schemaField.IsVisible;
                            dataField.CssName     = schemaField.CssName;
                            dataField.ColumnOrder = schemaField.ColumnOrder;
                        }
                        //把建立的field对象赋给对应索引的fieldlist数组。
                        row.ObjFieldList[m] = dataField;
                    }
                    //把建立的row对象赋给对应索引的 rowlist数组
                    objSubList.RowList[i] = row;
                    row.SubSubList        = CreateSubList(objlist[i], objSubList.Name, schemaBill, true);
                }
                //把建立的sublist对象赋给对应索引的sublist数组
                if (schemaBill.GetSubListsDict()[objSubList.Name] != null && isSub == false)
                {
                    objSubList.ColumnList = schemaBill.GetSubListsDict()[objSubList.Name].ColumnList;
                }
                //把建立的sublist对象赋给对应索引的sublist数组
                if (schemaBill.GetSubListsDict()[listName] != null && isSub == true)
                {
                    objSubList.ColumnList = schemaBill.GetSubListsDict()[listName].SubColumnList;
                }
                sublists[j] = objSubList;
            }
            return(sublists);
        }
Exemple #3
0
        public static ObjSubList[] CreateSubList(XmlNode nodeObject, string listName, ObjBill schemaBill, bool isSub)
        {

            //选取ObjectList节点
            XmlNodeList listList = nodeObject.SelectNodes("ObjectList");
            //根据节点数建立实体集
            ObjSubList[] sublists = new ObjSubList[listList.Count];
            //遍历结点
            for (int j = 0; j < listList.Count; j++)
            {
                //从该结点获取一个ObjectList的Name
                string subListName = ((XmlElement)listList[j]).GetAttribute("Name");
                string subListText = ((XmlElement)listList[j]).GetAttribute("Text");
                //建立Sublist对象
                ObjSubList objSubList = new ObjSubList();
                objSubList.Name = subListName;
                objSubList.Text = subListText;
                var temp =schemaBill.GetSubListsDict()[subListName];
                if (temp != null)
                {
                    objSubList.Align = temp.Align;
                    objSubList.HideWhenEmpty = temp.HideWhenEmpty;
                }

                //把billschema的columnList的信息赋给bill

                //从该结点中获取Object节点集,对应Sublist的行数据
                XmlNodeList objlist = listList[j].SelectNodes("Object");
                //根据xml数据中的object节点数建立sublist对象的rowlist数组
                objSubList.RowList = new ObjRow[objlist.Count];
                //遍历 object节点集,以构建数据
                for (int i = 0; i < objlist.Count; i++)
                {
                    //得到object的name
                    string rowName = ((XmlElement)objlist[i]).GetAttribute("Name");
                    string rowID = ((XmlElement)objlist[i]).GetAttribute("id");
                    if (string.IsNullOrEmpty(rowID))
                    {
                      //  continue;
                    }
                    //从object结点中得到所有的attribute,即该行的所有字段
                    XmlNodeList list = objlist[i].SelectNodes("Attribute");
                    //建立对应的objrow对象以容纳字段数据
                    ObjRow row = new ObjRow();
                    row.Name = rowName;
                    row.Id = rowID;
                    //根据attribut的数量建立fieldlist数组
                    row.ObjFieldList = new ObjField[list.Count];
                    //遍历attribute结点
                    for (int m = 0; m < list.Count; m++)
                    {
                        //从attribute节点中得到数据信息
                        XmlElement node = list[m] as XmlElement;
                        string Name = ((XmlElement)node).GetAttribute("Name");
                        string Text = ((XmlElement)node).GetAttribute("Text");
                        string DataType = ((XmlElement)node).GetAttribute("DataType");
                        string DataValue = ((XmlElement)node).GetAttribute("DataValue");

                        //建立对应的objfield对象
                        ObjField dataField = new ObjField();
                        dataField.Name = Name;
                        //dataField.Text = Text;
                        dataField.DataType = DataType;
                        dataField.DataValue = DataValue;
                        string fgColor = string.Empty;
                        string Tooltip = string.Empty;
                        if (node.HasAttribute("Color"))
                        {
                            fgColor = node.GetAttribute("Color");
                        }
                        if (node.HasAttribute("Tooltip"))
                        {
                            Tooltip = node.GetAttribute("Tooltip");
                        }
                        dataField.Color = fgColor;
                        dataField.Tooltip = Tooltip;


                        //如果能够在配置文件中找到对应的定义项,则把该定义项的相关信息赋值到该对象。
                        //通过Name作为key进行过索引
                        if (schemaBill.GetSubListsDict()[subListName] != null && schemaBill.GetSubListsDict()[subListName].GetRowDict()[rowID] != null && schemaBill.GetSubListsDict()[subListName].GetRowDict()[rowID].GetObjFieldDict()[Name] != null)
                        {
                            ObjField schemaField = schemaBill.GetSubListsDict()[subListName].GetRowDict()[rowID].GetObjFieldDict()[Name];
                            dataField.Colspan = schemaField.Colspan;
                            dataField.IsVisible = schemaField.IsVisible;
                            dataField.CssName = schemaField.CssName;
                            dataField.ColumnOrder = schemaField.ColumnOrder;
                        }
                        //把建立的field对象赋给对应索引的fieldlist数组。
                        row.ObjFieldList[m] = dataField;

                    }
                    //把建立的row对象赋给对应索引的 rowlist数组
                    objSubList.RowList[i] = row;
                    row.SubSubList = CreateSubList(objlist[i], objSubList.Name, schemaBill, true);
                }
                //把建立的sublist对象赋给对应索引的sublist数组
                if (schemaBill.GetSubListsDict()[objSubList.Name] != null && isSub == false)
                {
                    objSubList.ColumnList = schemaBill.GetSubListsDict()[objSubList.Name].ColumnList;
                }
                //把建立的sublist对象赋给对应索引的sublist数组
                if (schemaBill.GetSubListsDict()[listName] != null && isSub == true)
                {
                    objSubList.ColumnList = schemaBill.GetSubListsDict()[listName].SubColumnList;
                }
                sublists[j] = objSubList;
            }
            return sublists;
        }