Skip to content

Commit

Permalink
Grid CRUD samples improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
gustavnavar committed Nov 20, 2019
1 parent db3738d commit 3e84b95
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 20 deletions.
26 changes: 26 additions & 0 deletions GridBlazorClientSide.Client/ColumnCollections/ColumnCollections.cs
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,32 @@ public class ColumnCollections
c.Add(o => o.ShipCountry, true);
};

public static Action<IGridColumnCollection<Order>> OrderColumnsWithCustomCrud = (c) =>
{
/* Adding "OrderID" column: */
c.Add(o => o.OrderID).SetPrimaryKey(true).Titled(SharedResource.Number).SetWidth(100);
/* Adding "OrderDate" column: */
c.Add(o => o.OrderDate, "OrderCustomDate").Titled(SharedResource.OrderCustomDate)
.Format("{0:yyyy-MM-dd}").SetWidth(120);
/* Adding "CompanyName" column: */
c.Add(o => o.Customer.CompanyName).Titled(SharedResource.CompanyName)
.SetWidth(250).SetCrudHidden(true);
/* Adding "ContactName" column: */
c.Add(o => o.Customer.ContactName).Titled(SharedResource.ContactName).SetWidth(250).SetCrudHidden(true);
/* Adding "Freight" column: */
c.Add(o => o.Freight)
.Titled(SharedResource.Freight)
.Format("{0:F}");
/* Adding "Vip customer" column: */
c.Add(o => o.Customer.IsVip).Titled(SharedResource.IsVip).SetWidth(70).Css("hidden-xs") //hide on phones
.RenderValueAs(o => o.Customer.IsVip ? "Yes" : "No").SetCrudHidden(true);
};

public static Action<IGridColumnCollection<Order>> OrderColumnsWithSubgrids = c =>
{
/* Adding "OrderID" column: */
Expand Down
3 changes: 1 addition & 2 deletions GridBlazorClientSide.Client/Pages/CustomCrud.razor
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ else
var query = new QueryDictionary<StringValues>();
string url = NavigationManager.BaseUri + "api/SampleData/OrderColumnsWithCrud";

Action<IGridColumnCollection<Order>> columns = c => ColumnCollections.OrderColumnsWithCrud(c,
orderService.GetAllCustomers, orderService.GetAllEmployees, orderService.GetAllShippers);
Action<IGridColumnCollection<Order>> columns = c => ColumnCollections.OrderColumnsWithCustomCrud(c);
var client = new GridClient<Order>(url, query, false, "ordersGrid", columns, locale)
.Sortable()
.Filterable()
Expand Down
24 changes: 14 additions & 10 deletions GridBlazorClientSide.Client/Services/OrderService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,44 @@ namespace GridBlazorClientSide.Client.Services
{
public class OrderService : IOrderService
{
private readonly HttpClient _http;
private readonly HttpClient _httpClient;
private readonly string _baseUri;

public OrderService(HttpClient http)
public OrderService(HttpClient httpClient, NavigationManager navigationManager)
{
_http = http;
_httpClient = httpClient;
_baseUri = navigationManager.BaseUri;
}

public async Task<Order> Get(params object[] keys)
{
int orderId;
int.TryParse(keys[0].ToString(), out orderId);
return await _http.GetJsonAsync<Order>($"api/Order/{orderId}");
return await _httpClient.GetJsonAsync<Order>(_baseUri + $"api/Order/{orderId}");
}

public async Task Insert(Order item)
{
await _http.PostJsonAsync($"api/Order/{item.OrderID}", item);
await _httpClient.PostJsonAsync(_baseUri + $"api/Order", item);
}

public async Task Update(Order item)
{
await _http.PutJsonAsync($"api/Order/{item.OrderID}", item);
await _httpClient.PutJsonAsync(_baseUri + $"api/Order/{item.OrderID}", item);
}

public async Task Delete(params object[] keys)
{
int orderId;
int.TryParse(keys[0].ToString(), out orderId);
await _http.SendJsonAsync(HttpMethod.Delete, $"api/Order/{orderId}", null);
await _httpClient.SendJsonAsync(HttpMethod.Delete, _baseUri + $"api/Order/{orderId}", null);
}

public IList<Tuple<string, string>> GetAllCustomers()
{
try
{
var customers = _http.GetJsonAsync<Tuple<string, string>[]>($"api/SampleData/GetAllCustomers").Result;
var customers = _httpClient.GetJsonAsync<Tuple<string, string>[]>(_baseUri + $"api/SampleData/GetAllCustomers").Result;
return customers.ToList();
}
catch (Exception e)
Expand All @@ -60,7 +62,8 @@ public async Task Delete(params object[] keys)
{
try
{
return _http.GetJsonAsync<Tuple<string, string>[]>($"api/SampleData/GetAllEmployees").Result;
var employees = _httpClient.GetJsonAsync<Tuple<string, string>[]>(_baseUri + $"api/SampleData/GetAllEmployees").Result;
return employees.ToList();
}
catch (Exception e)
{
Expand All @@ -73,7 +76,8 @@ public async Task Delete(params object[] keys)
{
try
{
return _http.GetJsonAsync<Tuple<string, string>[]>($"api/SampleData/GetAllShippers").Result;
var shippers = _httpClient.GetJsonAsync<Tuple<string, string>[]>(_baseUri + $"api/SampleData/GetAllShippers").Result;
return shippers.ToList();
}
catch (Exception e)
{
Expand Down
4 changes: 1 addition & 3 deletions GridBlazorClientSide.Server/Controllers/OrderController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ public OrderController(NorthwindDbContext context)
}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([FromBody] Order order)
{
if (ModelState.IsValid)
Expand Down Expand Up @@ -95,8 +94,7 @@ public async Task<ActionResult> UpdateOrder(int id, [FromBody] Order order)
}

[HttpDelete("{id}")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Delete(long id)
public async Task<ActionResult> Delete(int id)
{
var repository = new OrdersRepository(_context);
Order order = await repository.GetById(id);
Expand Down
27 changes: 27 additions & 0 deletions GridBlazorServerSide/ColumnCollections/ColumnCollections.cs
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,33 @@ public class ColumnCollections
c.Add(o => o.ShipCountry, true);
};

public static Action<IGridColumnCollection<Order>>
OrderColumnsWithCustomCrud = (c) =>
{
/* Adding "OrderID" column: */
c.Add(o => o.OrderID).SetPrimaryKey(true).Titled(SharedResource.Number).SetWidth(100);
/* Adding "OrderDate" column: */
c.Add(o => o.OrderDate, "OrderCustomDate").Titled(SharedResource.OrderCustomDate)
.Format("{0:yyyy-MM-dd}").SetWidth(120);
/* Adding "CompanyName" column: */
c.Add(o => o.Customer.CompanyName).Titled(SharedResource.CompanyName)
.SetWidth(250).SetCrudHidden(true);
/* Adding "ContactName" column: */
c.Add(o => o.Customer.ContactName).Titled(SharedResource.ContactName).SetWidth(250).SetCrudHidden(true);
/* Adding "Freight" column: */
c.Add(o => o.Freight)
.Titled(SharedResource.Freight)
.Format("{0:F}");
/* Adding "Vip customer" column: */
c.Add(o => o.Customer.IsVip).Titled(SharedResource.IsVip).SetWidth(70).Css("hidden-xs") //hide on phones
.RenderValueAs(o => o.Customer.IsVip ? "Yes" : "No").SetCrudHidden(true);
};

public static Action<IGridColumnCollection<Order>> OrderColumnsWithSubgrids = c =>
{
/* Adding "OrderID" column: */
Expand Down
6 changes: 1 addition & 5 deletions GridBlazorServerSide/Pages/CustomCrud.razor
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
@using System.Globalization
@using System.Threading.Tasks
@inject IOrderService orderService
@inject ICustomerService customerService
@inject IEmployeeService employeeService
@inject IShipperService shipperService

<h1>Grid Sample</h1>

Expand Down Expand Up @@ -50,8 +47,7 @@ else
var columnCollections = new ColumnCollections();
var query = new QueryDictionary<StringValues>();

Action<IGridColumnCollection<Order>> columns = c => ColumnCollections.OrderColumnsWithCrud(c,
customerService.GetAllCustomers, employeeService.GetAllEmployees, shipperService.GetAllShippers);
Action<IGridColumnCollection<Order>> columns = c => ColumnCollections.OrderColumnsWithCustomCrud(c);
var client = new GridClient<Order>(q => orderService.GetOrdersGridRows(columns, q),
query, false, "ordersGrid", columns, locale)
.Sortable()
Expand Down

0 comments on commit 3e84b95

Please sign in to comment.