Normally using the sort logic recommended by Brenden is ideal. But, be careful if you are pulling items across multiple branches of the content tree. Its possible to target items in separate branches that are all of the same NodeLevel. When this happens, using "NodeLevel, NodeOrder, NodeName" will result in items being mixed together from separate branches. In these cases, you may have to use more than one repeater to target each branch separately, or write a custom query and use it in a SQL data source, or fall back to some other logic, like "NodeLevel, DocumentNamePath" which would essentially sort each level by their alphabetized breadcrumbs.