/// <summary> /// Specify the data source for the table /// </summary> /// <typeparam name="TData">The type of original data, available as a queryable</typeparam> /// <param name="queryable">The original data to expose</param> /// <param name="configure">Configures the details of the data source</param> /// <returns>The original builder object</returns> /// <remarks>This method changes and returns the original builder object</remarks> public DataTableBuilder <TViewModel> WithDataSource <TData>(IQueryable <TData> queryable, Action <DataProviderBuilder <TData, TViewModel> > configure) { var builder = new DataProviderBuilder <TData, TViewModel>(queryable); configure(builder); _dataProvider = builder.Build(); return(this); }
public UniDataTable Init(IFilteredDataProvider <Json> dataProvider, IEnumerable <DataTableColumn> sourceColumns, int initialPageSize, int initialPageIndex, Order initialOrder) { CheckDisposed(); this.DataProvider = dataProvider; Pagination.DataProvider = dataProvider; Pagination.LoadRowsForCurrentPage = LoadRowsForCurrentPage; Pagination.LoadRows = LoadRows; Pagination.GetTotalRows = () => (int)TotalRows; this.DataProvider.PaginationConfiguration = new PaginationConfiguration(initialPageSize, initialPageIndex); this.DataProvider.FilterOrderConfiguration = new FilterOrderConfiguration(initialOrder, new Filter[0]); PopulateColumns(sourceColumns); LoadRowsForCurrentPage(); return(this); }
/// <summary> /// Specify the data source for the table. This method allows the developer to use custom implementation of <see cref="IFilteredDataProvider{TViewModel}"/>. /// It's usually sufficient to use other overloads that accept <see cref="IQueryable{TData}"/> directly /// </summary> /// <param name="dataProvider">The data source object</param> /// <returns>The original builder object</returns> /// <remarks>This method changes and returns the original builder object</remarks> public DataTableBuilder <TViewModel> WithDataSource(IFilteredDataProvider <TViewModel> dataProvider) { _dataProvider = dataProvider; return(this); }