public WebDataTable(string name, string sortIndex, string sortOrder, long pageIndex, long pageSize, FilterDataObject filterData, WebISGDatabaseType databaseType)
        {
            Name = name;
            Rows = new List<WebDataTableRow>();

            // The "Actions" column will be the same across every table
            Columns =
                new List<WebDataTableColumn>
                    {
                        new WebDataTableColumn("act")
                            {
                                ParentTable = name,
                                DatabaseType = databaseType
                            }
                    };

            using (var serviceClient = new NeonISGDataServiceClient(Configuration.ActiveNeonDataServiceEndpoint))
            {
                var database = Mapper.Map<WebISGDatabaseType, NeonISGDatabaseType>(databaseType);
                var rtrn = serviceClient.GetData(Name, sortIndex, sortOrder, pageIndex, pageSize, filterData.FilterQuery, database);

                foreach (var column in rtrn.Columns)
                {
                    Columns.Add(
                        new WebDataTableColumn(column.Name)
                            {
                                IsNullable = column.IsNullable,
                                Length = column.Length,
                                Precision = column.Precision,
                                Scale = column.Scale,
                                TypeName = column.TypeName,
                                ParentTable = name,
                                IsPrimaryKey = column.IsPrimaryKey,
                                IsReadonlyIdentity = column.IsReadonlyIdentity,
                                DatabaseType = databaseType
                            });
                }
                Columns = Columns.OrderBy(x => x.Order).ThenBy(x => x.FriendlyName).ToList();

                foreach (var row in rtrn.Rows)
                {
                    var dataRow = new WebDataTableRow(row.RowId);
                    foreach (var column in Columns.Where(c => !c.Name.Equals("act")))
                    {
                        var cell = row.Cells.FirstOrDefault(x => string.Equals(x.ColumnName, column.Name, StringComparison.CurrentCultureIgnoreCase));
                        var value = (cell != null) ? cell.Value : string.Empty;

                        dataRow.Cells.Add(
                            new WebDataTableCell(column)
                            {
                                Value = value
                            });
                    }
                    Rows.Add(dataRow);
                }
            }
        }