Skip to content

Commit b01baf6

Browse files
committed
Additional params example
1 parent 0285e9d commit b01baf6

File tree

13 files changed

+91
-16
lines changed

13 files changed

+91
-16
lines changed

Griddly/Controllers/ExampleController.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public ActionResult Columns()
1515
{
1616
Title = "Columns Example",
1717
GridAction = "ColumnsGrid",
18+
ParentView = "Columns.cshtml",
1819
GridView = "ColumnsGrid.cshtml",
1920
Description = "Griddly column helpers offer several ways to quickly define your table structure."
2021
});
@@ -26,21 +27,34 @@ public ActionResult Filters()
2627
{
2728
Title = "Filters Example",
2829
GridAction = "FiltersGrid",
30+
ParentView = "Filters.cshtml",
2931
GridView = "FiltersGrid.cshtml",
3032
Description = "There are several filter helpers built into Griddly. Click the \"Filter\" button to play with these."
3133
});
3234
}
3335

36+
public ActionResult Parameters()
37+
{
38+
return View("Example", new ExampleModel()
39+
{
40+
Title = "Additional Parameters Example",
41+
GridAction = "ParametersGrid",
42+
ParentView = "Parameters.cshtml",
43+
GridView = "ParametersGrid.cshtml",
44+
Description = "Non-filter parameters may be passed from the parent view to the grid action on every refresh request."
45+
});
46+
}
47+
3448
#region Test Data
3549

36-
static readonly IQueryable<TestGridItem> _testData = BuildTestData().AsQueryable();
50+
static readonly IList<TestGridItem> _testData = BuildTestData();
3751

38-
static List<TestGridItem> BuildTestData()
52+
static List<TestGridItem> BuildTestData(int rows = 1000)
3953
{
4054
List<TestGridItem> items = new List<TestGridItem>();
4155
Random r = new Random();
4256

43-
for (int i = 0; i < 1000; i++)
57+
for (int i = 0; i < rows; i++)
4458
{
4559
items.Add(new TestGridItem()
4660
{

Griddly/Controllers/Examples/ColumnsGrid.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public partial class ExampleController : Controller
1010
{
1111
public GriddlyResult ColumnsGrid()
1212
{
13-
IQueryable<TestGridItem> query = _testData;
13+
IQueryable<TestGridItem> query = _testData.AsQueryable();
1414

1515
return new QueryableResult<TestGridItem>(query);
1616
}

Griddly/Controllers/Examples/FiltersGrid.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ namespace Griddly.Controllers
99
{
1010
public partial class ExampleController : Controller
1111
{
12-
public GriddlyResult FiltersGrid(string[] item, string lastName, string[] state, int? quantityFrom, int? quantityTo, DateTime? dateFrom, DateTime? dateTo, bool? isApproved)
12+
public GriddlyResult FiltersGrid(string[] item, string lastName, string[] state, int? quantityFrom, int? quantityTo, DateTime? dateFrom, DateTime? dateTo, bool? isApproved, bool? totalPositive)
1313
{
14-
IQueryable<TestGridItem> query = _testData;
14+
IQueryable<TestGridItem> query = _testData.AsQueryable();
1515

1616
if (item != null && item.Any())
1717
query = query.Where(x => item.Contains(x.Item));
1818

1919
if (!string.IsNullOrWhiteSpace(lastName))
20-
query = query.Where(x => x.LastName.Contains(lastName));
20+
query = query.Where(x => x.LastName.IndexOf(lastName, StringComparison.InvariantCultureIgnoreCase) > -1);
2121

2222
if (state != null && state.Any())
2323
query = query.Where(x => state.Contains(x.State));
@@ -37,6 +37,11 @@ public GriddlyResult FiltersGrid(string[] item, string lastName, string[] state,
3737
if (isApproved != null)
3838
query = query.Where(x => x.IsApproved == isApproved.Value);
3939

40+
if (totalPositive == true)
41+
query = query.Where(x => x.Total > 0);
42+
else if (totalPositive == false)
43+
query = query.Where(x => x.Total < 0);
44+
4045
return new QueryableResult<TestGridItem>(query);
4146
}
4247
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using Griddly.Models;
2+
using Griddly.Mvc;
3+
using Griddly.Mvc.Results;
4+
using System;
5+
using System.Linq;
6+
using System.Web.Mvc;
7+
8+
namespace Griddly.Controllers
9+
{
10+
public partial class ExampleController : Controller
11+
{
12+
public GriddlyResult ParametersGrid(string lastname)
13+
{
14+
ViewBag.TitleParameter = $"Last Name starts with \"{lastname}\"";
15+
16+
IQueryable<TestGridItem> query = _testData.AsQueryable();
17+
18+
if (!string.IsNullOrWhiteSpace(lastname))
19+
query = query.Where(x => x.LastName.StartsWith(lastname, StringComparison.InvariantCultureIgnoreCase));
20+
21+
return new QueryableResult<TestGridItem>(query);
22+
}
23+
}
24+
}

Griddly/Griddly.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@
129129
<Compile Include="Controllers\Examples\ColumnsGrid.cs">
130130
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
131131
</Compile>
132+
<Compile Include="Controllers\Examples\ParametersGrid.cs">
133+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
134+
</Compile>
132135
<Compile Include="Controllers\Examples\FiltersGrid.cs">
133136
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
134137
</Compile>
@@ -282,6 +285,10 @@
282285
<Content Include="Views\Example\Example.cshtml" />
283286
<Content Include="Views\Example\FiltersGrid.cshtml" />
284287
<Content Include="Views\Example\ColumnsGrid.cshtml" />
288+
<Content Include="Views\Example\ParametersGrid.cshtml" />
289+
<Content Include="Views\Example\Parameters.cshtml" />
290+
<Content Include="Views\Example\Columns.cshtml" />
291+
<Content Include="Views\Example\Filters.cshtml" />
285292
</ItemGroup>
286293
<ItemGroup>
287294
<ProjectReference Include="..\Griddly.Mvc\Griddly.Mvc.csproj">

Griddly/Models/ExampleModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ public class ExampleModel
77

88
public string Description { get; set; }
99

10+
public string ParentView { get; set; }
11+
1012
public string GridView { get; set; }
1113

1214
public string GridAction { get; set; }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@Html.Griddly("ColumnsGrid")

Griddly/Views/Example/Example.cshtml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
<div class="tab-content">
2828

2929
<div id="tab-display" class="tab-pane active" role="tabpanel">
30-
@Html.Griddly(Model.GridAction)
30+
@Html.Partial($"~/Views/Example/{Model.ParentView}")
3131
</div>
3232

3333
<div id="tab-view" class="tab-pane" role="tabpanel">
34-
<h3>Parent View (@(ViewContext.RouteData.Values["action"].ToString()).cshtml)</h3>
35-
<pre><code class="cs razor-cshtml">@@Html.Griddly("@Model.GridAction")</code></pre>
34+
<h3>Parent View (@Model.ParentView.ToLower())</h3>
35+
<pre><code class="cs razor-cshtml">@System.IO.File.ReadAllText(Context.Server.MapPath("~/Views/Example/" + Model.ParentView))</code></pre>
3636

3737
<h3>Child View (@Model.GridView.ToLower())</h3>
3838
<pre><code class="cs razor-cshtml">@System.IO.File.ReadAllText(Context.Server.MapPath("~/Views/Example/" + Model.GridView))</code></pre>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@Html.Griddly("FiltersGrid")

Griddly/Views/Example/FiltersGrid.cshtml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
EmptyGridMessage = "Sorry, no records were found"
3636
};
3737

38+
// Filters on columns
3839
gridSettings
3940
.Column(x => x.Id)
4041
.Column(x => x.Item, filter: x => x.FilterList(groupedList))
@@ -45,17 +46,17 @@
4546
.Column(x => x.State, filter: x =>
4647
{
4748
GriddlyFilterList filter = x.FilterList(TestGridItem.UsStates);
48-
49-
//filter.CaptionPlural = "State";
5049
filter.DisplayItemCount = 2;
51-
5250
return filter;
5351
})
5452
.Column(x => x.PostalCode, "Zip")
5553
.Column(x => x.Quantity, filter: x => x.FilterRange(FilterDataType.Integer))
5654
.Column(x => x.Total, format: "c")
5755
.Column(x => x.Date, filter: x => x.FilterRange(FilterDataType.Date))
5856
.Column(x => x.IsApproved, "Approved", filter: x => x.FilterBool(nullItemText: "Both", isNoneAll: true));
57+
58+
// Non-column based filter:
59+
gridSettings.FilterBool("totalPositive", "Total Is Positive", nullItemText: "All");
5960
}
6061

6162
@Html.Griddly(gridSettings)

0 commit comments

Comments
 (0)