Ejemplo n.º 1
0
        private void LoadRows([NotNull] ResultDataTable dataTable, [NotNull] XElement element)
        {
            Debug.ArgumentNotNull(dataTable, nameof(dataTable));
            Debug.ArgumentNotNull(element, nameof(element));

            var itemsElement = element.Element(@"rows");

            if (itemsElement == null)
            {
                return;
            }

            if (!itemsElement.Elements().Any())
            {
                var dataRow = (ResultDataRow)dataTable.NewRow();
                dataTable.Rows.Add(dataRow);
                return;
            }

            foreach (var item in itemsElement.Elements())
            {
                var fieldArray  = new List <FieldUri>();
                var columnArray = new List <string>();

                var languageName = item.GetAttributeValue("language", LanguageManager.CurrentLanguage.Name) ?? "en";

                var itemUri        = new ItemUri(DatabaseUri, new ItemId(new Guid(item.GetAttributeValue("id"))));
                var itemVersionUri = new ItemVersionUri(itemUri, new Language(languageName), Data.Version.Latest);

                foreach (var field in item.Elements())
                {
                    FieldUri fieldUri = null;

                    var id = field.GetAttributeValue("id");
                    if (!string.IsNullOrEmpty(id))
                    {
                        fieldUri = new FieldUri(itemVersionUri, new FieldId(new Guid(id)));
                    }

                    fieldArray.Add(fieldUri);
                    columnArray.Add(field.Value);
                }

                var dataRow = (ResultDataRow)dataTable.NewRow();

                dataRow.Name       = item.GetAttributeValue("name");
                dataRow.Icon       = new Icon(DatabaseUri.Site, item.GetAttributeValue("icon"));
                dataRow.ItemUri    = itemUri;
                dataRow.FieldArray = fieldArray.ToArray();
                dataRow.ItemArray  = columnArray.ToArray();

                dataTable.Rows.Add(dataRow);
            }
        }