How to: Bind the ASPxTreeList to Data Created at Runtime

  • 2 min to read

This example shows how to bind the ASPxTreeList to data created at runtime.

NOTE

To correctly restore from the ViewState, a tree list needs data. When binding to data created at runtime, you must bind the tree list within the Page_Init event. Don't handle the Page_Load event because it is fired after the ViewState has been restored.

using System.Data.OleDb;
using DevExpress.Web.ASPxTreeList;

public partial class _Default : System.Web.UI.Page {
    protected override void OnInit(EventArgs e) {
        base.OnInit(e);
        InitTreeList(ASPxTreeList1);
    }

    protected void Page_Load(object sender, EventArgs e) {
        ASPxTreeList1.DataBind();
        (ASPxTreeList1 as IPostBackDataHandlerEx).ForceLoadPostData(Tree.ID, HttpContext.Current.Request.Params);
    }

    OleDbDataAdapter CreateDataAdapter() {
        string connectionString =
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\Departments.mdb";
        OleDbConnection myConnection = new OleDbConnection(connectionString);
        string query =
        "SELECT [ID], [ParentID], [Department], [Budget], [Location] FROM [Departments]";
        return new OleDbDataAdapter(query, myConnection);
    }
    DataTable CreateDataTable(OleDbDataAdapter myAdapter) {
        DataTable dt = new DataTable();
        DataSet testData = new DataSet();
        myAdapter.Fill(testData);
        return testData.Tables[0];
    }
    void InitTreeList(ASPxTreeList tl) {
        tl.SettingsSelection.Recursive = true;
        tl.SettingsSelection.AllowSelectAll = true;
        tl.SettingsSelection.Enabled = true;
        tl.KeyFieldName = "ID";
        tl.ParentFieldName = "ParentID";
        tl.DataSource = CreateDataTable(CreateDataAdapter());
    }
}