C# ASP.NET TreeGrid (Indented Right/Down Icons) with multiple columns, to be used for a Forum listing, and other uses.
Must be able to databind to both a recursive [login to view URL], as well as a cached XML file of indented noderecords.
User MUST be able to expand/fetch more children on clientside WITHOUT refreshing page (ie, via JS/SOAP) AND if he refreshes that the rebuilt tree is not collapsed back to beginning (ie, SOAP calls updates XML cache of tree structure).
Multiple trees on one page must not cross-populate each other...
## Deliverables
Specs for the TreeGrid are as follows:
1.1) Basic classes:
cTreeGrid - base class.
-cColumnCollection Columns;
-cNodesCollection ChildrenNodes;
-cNodesCollection Rows -- linear access to all nodes/rows
cColumns Columns:
- string Title -- Column title.
- string Width -- maps to [login to view URL] string of column.
- bool Visible -- show/hide column in grid.
- int Pos -- index of column.
- bool IsTreeCol -- column used for indented right/down nav arrows.
- bool Editable; See Templates below.
cNode:
- Guid UID -- unique ID of Node
- bool Expanded -- display state;
- bool ChildrenHaveBeenFetched;
- cNodeChildren ChildrenNodes;
- cValuesCollection Values; -- Collection of HTMLtext for a row, iterable by intPos AND colName
- event ExpandCollapse() -- triggers change of bool Expanded, and therefore rendering., triggers FetchChildren first.
- event FetchChildren() -- adds children to this node from the datasource if ChildrenFetched==false.
1.2) DataSource for a Tree can be BOTH a [login to view URL] (same as DataGrid), or XML file of embedded records.
1.3) An XML cache of the Node structure must be cached in Session so that one doesn't have to recurse through a database each time page is refreshed.
Each time FetchChildren() is used, it gets more nodes from the db table, and saves it to the XML Cache first.
Tree is then rendered from XML I guess.
1.4) View and TextBox EditTemplates for Columns -- just like DataGrid's.
1.5) By including the [login to view URL] provided by MS (not supported any longer but still works fine) one must be able to trigger a
request for more nodes via SOAP from the client WITHOUT REFRESHING THE PAGE!
These nodes are appended to the calling node via JavaScript.
1.6) The control must have unique tags/id's so that it two or more can co-exist on the same page without cross-polluting each other.
1.7)No usage of inline old style ASP <%[login to view URL]%>code -- all done as per ASP.NET conventions.
1.8) Must NOT be based on DataGrid! Maybe DataRepeater ok.
1.9) just an Arrow_Right, and Arrow_Down icon, correctly indented at (depth*16px) is sufficient in TreeColumn.
2. Work rendered
2.1) A demo project that shows that two or more trees on same page hold together whether nodes were fetched by SOAP, or page refresh.
2.2) an XML Datasource file to demonstrate loading of an xml file.
2.3) DB file containing a short forum of data (ID, ParentID, Subject, Body would do fine) linked to Control to show loading of DataTable as datasource.
2.5) All classes fully documented.
3) Ongoing work.
This treegrid is something that we would like to invest more time and money. If this first stage goes well, and you are interested in being notified of second phase bids, let us know this.
4) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
5) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
6) Exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
Windows 2000 or higher, IIS 5.0 and 6.0, VisualStudio 2000, IE 5.5 or higher. No reliance on any MS HTC control or DataGrid or other --except for the HTC soap component. The rest done in JS clientside, and C# on server.