Esempio n. 1
0
        /// <summary>
        /// сортируем узлы по значению аттрибута
        /// </summary>
        /// <param name="node_name"></param>
        /// <param name="attr_name"></param>
        public void SortNodesByAttrValue(string node_name, string attr_name, NodeSortFunc _sort_delegate)
        {
            var row_nodes = ExtFindNodes(node_name);

            if (row_nodes.Count > 0)
            {
                row_nodes.Sort((ExtXmlNode el1, ExtXmlNode el2) => { return(_sort_delegate(el1, el2, attr_name)); });
                // удаляем узлы, упорядоченные по-старому...
                foreach (var nd in row_nodes)
                {
                    if (nd.ParentNode != null)
                    {
                        nd.ParentNode.RemoveChild(nd.InnerNode);
                    }
                }

                // вставляем в новом порядке
                XmlNode prev_node = null;
                foreach (var nd in row_nodes)
                {
                    if (nd.ParentNode != null)
                    {
                        nd.ParentNode.InsertBefore(nd.InnerNode, null);
                        prev_node = nd.InnerNode;
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// сортируем узлы по значению аттрибута
        /// </summary>
        /// <param name="node_name"></param>
        /// <param name="attr_name"></param>
        public void SortNodesByAttrValue( string node_name, string attr_name, NodeSortFunc _sort_delegate )
        {
            var row_nodes = ExtFindNodes( node_name );

            if ( row_nodes.Count > 0 ) {
                row_nodes.Sort( (ExtXmlNode el1, ExtXmlNode el2) => { return _sort_delegate(el1,el2,attr_name);} );
                // удаляем узлы, упорядоченные по-старому...
                foreach (var nd in row_nodes) {
                    if ( nd.ParentNode != null )
                        nd.ParentNode.RemoveChild(nd.InnerNode);
                }

                // вставляем в новом порядке
                XmlNode prev_node = null;
                foreach (var nd in row_nodes) {
                    if ( nd.ParentNode != null ) {
                        nd.ParentNode.InsertBefore(nd.InnerNode, null);
                        prev_node = nd.InnerNode;
                    }
                }
            }
        }