Exemplo n.º 1
0
        public string GetValue(Control ctrl, XmlNode renderingDocument)
        {
            /*if, once here, the getWebControl created a RepeaterPanel*/
            if (referredElement.MaxOccurs > 1)
            {
                string rs = "";

                RepeaterPanel    rp     = ((ctrl as UpdatePanel).ContentTemplateContainer.Controls[1] as RepeaterPanel);
                XmlSchemaElement newElm = new XmlSchemaElement();
                newElm.Name           = referredElement.Name;
                newElm.SchemaType     = referredElement.SchemaType;
                newElm.SchemaTypeName = referredElement.SchemaTypeName;
                newElm.IsNillable     = referredElement.IsNillable;

                foreach (Control ct in rp.RepeatedItems())
                {
                    rs += FieldsManager.GetInstance(renderingDocument, newElm, schemas).GetValue(ct, renderingDocument);
                }
                return(rs);
            }
            /*else there was just a standard complexType inside the <element> */
            else
            {
                Panel pn = ctrl as Panel;
                /*i create a node with the element name with inside the value of my child (complexType)*/
                return("<" + referredElement.Name + ">"
                       + FieldsManager.GetInstance(renderingDocument.FirstChild, referredElement.SchemaType, schemas).GetValue(pn.Controls[0], renderingDocument.FirstChild) +
                       "</" + referredElement.Name + ">");
            }
        }
Exemplo n.º 2
0
        public Control GetWebControl(HttpServerUtility server, System.Xml.XmlNode renderingDocument)
        {
            /* if it is a repeatable element, of any type, complexType or our base types*/
            if (referredElement.MaxOccurs > 1)
            {
                XmlSchemaElement newElm = new XmlSchemaElement();

                /*I copy the schema element omitting min e max Occurs*/
                newElm.Name           = referredElement.Name;
                newElm.SchemaType     = referredElement.SchemaType;
                newElm.SchemaTypeName = referredElement.SchemaTypeName;

                /*and i create a repeater panel that manages the repetition of that single element (without the max e min occurs)*/
                RepeaterPanel rp = new RepeaterPanel(schemas, renderingDocument, newElm, value, (int)referredElement.MinOccurs, (int)referredElement.MaxOccurs);
                rp.ID = referredElement.Name + "_Repeating";
                UpdatePanel up = new UpdatePanel();
                up.ContentTemplateContainer.Controls.Add(new LiteralControl("<BR>"));
                up.ContentTemplateContainer.Controls.Add(rp);

                return(up);
            }
            else             /*if it is just an element with an inline complex type*/
            {
                NamingPanel pn = new NamingPanel();

                string name;
                if (renderingDocument.Attributes["renderedLabel"] != null)
                {
                    name = renderingDocument.Attributes["renderedLabel"].Value.FromXmlValue2Render(server);
                }
                else
                {
                    name = referredElement.Name.FromXmlName2Render(server);
                }

                pn.GroupingText = name;
                pn.ID           = referredElement.Name;
                /*This field should be a ComplexType*/
                var field = FieldsManager.GetInstance(renderingDocument.FirstChild, referredElement.SchemaType, schemas);
                /*I set the value to the ComplexType inside the element*/
                if (value != null)
                {
                    ((IField)field).SetValue(value[0].ChildNodes.ToList());
                }
                pn.Controls.Add(field.GetWebControl(server, renderingDocument.FirstChild));

                return(pn);
            }
        }