Search code examples
c#devexpressdevexpress-windows-ui

The method CreateDefaultView () is not called in devexpress GridControl


I have inherited a devexpress GridControl, following all steps from here.

There is only one problem, the method CreateDefaultView() is never called.

This is the code:

public partial class gttDXGridControl : GridControl
{
    public gttDXGridControl() : base()
    { }

    protected override void RegisterAvailableViewsCore(InfoCollection collection)
    {
        base.RegisterAvailableViewsCore(collection);
        collection.Add(new gttDXGridViewInfoRegistrator());
    }

    //this event is not called for some reason...
    protected override BaseView CreateDefaultView()
    {
        gttDXGridView gridView = CreateView("gttGridView") as gttDXGridView;
        // would like to initialize stuff here...
        return gridView;
    }
}

public partial class gttDXGridViewInfoRegistrator : DevExpress.XtraGrid.Registrator.GridInfoRegistrator
{
    public override string ViewName { get { return "gttGridView"; } }
    public override BaseView CreateView(GridControl grid) { return new gttDXGridView(grid as GridControl); }
    public override BaseViewInfo CreateViewInfo(BaseView view) { return new gttDXGridViewInfo(view as gttDXGridView); }
    public override BaseViewHandler CreateHandler(BaseView view) { return new gttDXGridHandler(view as gttDXGridView); }

}

public partial class gttDXGridViewInfo : GridViewInfo
{
    public gttDXGridViewInfo(DevExpress.XtraGrid.Views.Grid.GridView gridView) : base(gridView)
    { }

    public override int CalcRowHeight(Graphics graphics, int rowHandle, int min, int level, bool useCache, GridColumnsInfo columns)
    {
        return base.CalcRowHeight(graphics, rowHandle, MinRowHeight, level, useCache, columns);
    }

    public override int MinRowHeight
    {
        get { return base.MinRowHeight - 2; }
    }
}

This event is the place to be for initializing properties of the GridView, but its just never called. What could be the cause of this?


Solution

  • This event is called when MainView property is null. It means that this event will be called when you add new gttGridControl to your form in design time or in runtime.
    Here is example for runtime:

    var gridControl = new gttDXGridControl();
    
    gridControl.Width = 100;
    gridControl.Height = 100;
    
    Controls.Add(gridControl); // => Here this event will be invoked.