Skip to content

Commit

Permalink
DataGrid: Add more auto-generator attributes (#5514)
Browse files Browse the repository at this point in the history
* DataGrid | Add more attributes

* Descriptions

* Introduce a new SelectAttribute | DataGrid generate select accordingly

* DataGrid Docs for new generation attributes

* DateAttribute support

* Select adjust MaxVisibleItems

* Formating

* SelectAttribute | TextField default Text | ValueField default Value

* Release notes

---------

Co-authored-by: Mladen Macanovic <[email protected]>
  • Loading branch information
David-Moreira and stsrki authored Jun 2, 2024
1 parent 70c6c5a commit fc88cab
Show file tree
Hide file tree
Showing 15 changed files with 475 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,39 @@

public class Example
{
[DisplayAttribute(Name = "Name")]
[Order( DisplayOrder = 1, EditOrder = 2 )]
[Display(Name = "Name")]
public string FirstName { get; set; }

[Order( DisplayOrder = 2, EditOrder = 3 )]
public string LastName { get; set; }


[Order( DisplayOrder = 3, EditOrder = 4 )]
[Numeric(EnableStep = true, ShowStepButtons = true, Step = 1)]
public int Age { get; set; }

[Order( DisplayOrder = 5, EditOrder = 0 )]
public Status Status { get; set; }

[Numeric( EnableStep = true, ShowStepButtons = true, Step = 100 )]
[Order( DisplayOrder = 4, EditOrder = 1 )]
public decimal Balance { get; set; }

public Status Status { get; set; }
[IgnoreField]
public string FieldToBeIgnored { get; set; }

[Order( DisplayOrder = 5, EditOrder = 0 )]
[Display( Name = "Gender" )]
[Select( GetDataFunction = "GetGenders", TextField = nameof( Blazorise.Shared.Data.Gender.Description ), ValueField = nameof( Blazorise.Shared.Data.Gender.Code ) )]
public string Gender { get; set; }

[Order( DisplayOrder = 6, EditOrder = 6 )]
[Display( Name = "DOB" )]
[Date( InputMode = DateInputMode.Date )]
public DateOnly DateOfBirth { get; set; }

public IEnumerable<Gender> GetGenders()
=> EmployeeData.Genders;
}

public enum Status
Expand All @@ -44,12 +66,12 @@

private IEnumerable<Example> data = new List<Example>()
{
new(){ FirstName = "John", LastName = "Doe", Age = 30, Balance = 1000, Status = Status.Active },
new(){ FirstName = "Jane", LastName = "Doe", Age = 28, Balance = 2000, Status = Status.Active },
new(){ FirstName = "Joe", LastName = "Doe", Age = 26, Balance = 3000, Status = Status.Inactive },
new(){ FirstName = "Jill", LastName = "Doe", Age = 24, Balance = 4000, Status = Status.Inactive },
new(){ FirstName = "Jack", LastName = "Doe", Age = 22, Balance = 5000, Status = Status.Active },
new(){ FirstName = "Jen", LastName = "Doe", Age = 20, Balance = 6000, Status = Status.Active },
new(){ FirstName = "John", LastName = "Doe", Gender = "M", Age = 30, Balance = 1000, Status = Status.Active, FieldToBeIgnored = "4a92b1ea-e82d-4920-8d22-198a2385945e", DateOfBirth = new DateOnly(1992,03,05) },
new(){ FirstName = "Jane", LastName = "Doe", Gender = "F",Age = 28, Balance = 2000, Status = Status.Active, FieldToBeIgnored = "cb85ede4-4a66-4ab5-813d-6f09b4781489", DateOfBirth = new DateOnly(1972,03,03) },
new(){ FirstName = "Joe", LastName = "Doe", Gender = "M",Age = 26, Balance = 3000, Status = Status.Inactive, FieldToBeIgnored = "0725a26f-1b5c-4659-be06-2b4b108a2fb4", DateOfBirth = new DateOnly(1981,12,05) },
new(){ FirstName = "Jill", LastName = "Doe", Gender = "F",Age = 24, Balance = 4000, Status = Status.Inactive, FieldToBeIgnored = "bb85d60c-96fa-4137-a9f1-e09ec0497f5d", DateOfBirth = new DateOnly(1980,05,29) },
new(){ FirstName = "Jack", LastName = "Doe", Gender = "M",Age = 22, Balance = 5000, Status = Status.Active, FieldToBeIgnored = "76471dfe-2efd-4ec5-b192-82abc1b05c72", DateOfBirth = new DateOnly(1990,09,10) },
new(){ FirstName = "Jen", LastName = "Doe",Gender = "F", Age = 20, Balance = 6000, Status = Status.Active, FieldToBeIgnored = "be83a3c0-9636-4ebd-acca-08e6ffb5c469", DateOfBirth = new DateOnly(2000,01,01) },
};

}
46 changes: 34 additions & 12 deletions Documentation/Blazorise.Docs/Models/Snippets.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6761,28 +6761,50 @@ private Task OnPredefinedClicked() => dataGrid.ApplySorting(
public const string DataGridAutoGenerateColumnsExample = @"@using System.ComponentModel.DataAnnotations
<DataGrid TItem=""Example""
Data=""data""
Responsive
ShowPager
ShowPageSizes Editable>
Data=""data""
Responsive
ShowPager
ShowPageSizes Editable>
<DataGridCommandColumn TItem=""Example"" />
</DataGrid>
@code {
public class Example
{
[Order( DisplayOrder = 1, EditOrder = 2 )]
[Display( Name = ""Name"" )]
public string FirstName { get; set; }
[Order( DisplayOrder = 2, EditOrder = 3 )]
public string LastName { get; set; }
[Order( DisplayOrder = 3, EditOrder = 4 )]
[Numeric( EnableStep = true, ShowStepButtons = true, Step = 1 )]
public int Age { get; set; }
[Order( DisplayOrder = 5, EditOrder = 0 )]
public Status Status { get; set; }
[Numeric( EnableStep = true, ShowStepButtons = true, Step = 100 )]
[Order( DisplayOrder = 4, EditOrder = 1 )]
public decimal Balance { get; set; }
public Status Status { get; set; }
[IgnoreField]
public string FieldToBeIgnored { get; set; }
[Order( DisplayOrder = 5, EditOrder = 0 )]
[Display( Name = ""Gender"" )]
[Select( GetDataFunction = ""GetGenders"", TextField = nameof( Blazorise.Shared.Data.Gender.Description ), ValueField = nameof( Blazorise.Shared.Data.Gender.Code ) )]
public string Gender { get; set; }
[Order( DisplayOrder = 6, EditOrder = 6 )]
[Display( Name = ""DOB"" )]
[Date( InputMode = DateInputMode.Date )]
public DateOnly DateOfBirth { get; set; }
public IEnumerable<Gender> GetGenders()
=> EmployeeData.Genders;
}
public enum Status
Expand All @@ -6793,12 +6815,12 @@ public enum Status
private IEnumerable<Example> data = new List<Example>()
{
new(){ FirstName = ""John"", LastName = ""Doe"", Age = 30, Balance = 1000, Status = Status.Active },
new(){ FirstName = ""Jane"", LastName = ""Doe"", Age = 28, Balance = 2000, Status = Status.Active },
new(){ FirstName = ""Joe"", LastName = ""Doe"", Age = 26, Balance = 3000, Status = Status.Inactive },
new(){ FirstName = ""Jill"", LastName = ""Doe"", Age = 24, Balance = 4000, Status = Status.Inactive },
new(){ FirstName = ""Jack"", LastName = ""Doe"", Age = 22, Balance = 5000, Status = Status.Active },
new(){ FirstName = ""Jen"", LastName = ""Doe"", Age = 20, Balance = 6000, Status = Status.Active },
new(){ FirstName = ""John"", LastName = ""Doe"", Gender = ""M"", Age = 30, Balance = 1000, Status = Status.Active, FieldToBeIgnored = ""4a92b1ea-e82d-4920-8d22-198a2385945e"", DateOfBirth = new DateOnly(1992,03,05) },
new(){ FirstName = ""Jane"", LastName = ""Doe"", Gender = ""F"",Age = 28, Balance = 2000, Status = Status.Active, FieldToBeIgnored = ""cb85ede4-4a66-4ab5-813d-6f09b4781489"", DateOfBirth = new DateOnly(1972,03,03) },
new(){ FirstName = ""Joe"", LastName = ""Doe"", Gender = ""M"",Age = 26, Balance = 3000, Status = Status.Inactive, FieldToBeIgnored = ""0725a26f-1b5c-4659-be06-2b4b108a2fb4"", DateOfBirth = new DateOnly(1981,12,05) },
new(){ FirstName = ""Jill"", LastName = ""Doe"", Gender = ""F"",Age = 24, Balance = 4000, Status = Status.Inactive, FieldToBeIgnored = ""bb85d60c-96fa-4137-a9f1-e09ec0497f5d"", DateOfBirth = new DateOnly(1980,05,29) },
new(){ FirstName = ""Jack"", LastName = ""Doe"", Gender = ""M"",Age = 22, Balance = 5000, Status = Status.Active, FieldToBeIgnored = ""76471dfe-2efd-4ec5-b192-82abc1b05c72"", DateOfBirth = new DateOnly(1990,09,10) },
new(){ FirstName = ""Jen"", LastName = ""Doe"",Gender = ""F"", Age = 20, Balance = 6000, Status = Status.Active, FieldToBeIgnored = ""be83a3c0-9636-4ebd-acca-08e6ffb5c469"", DateOfBirth = new DateOnly(2000,01,01) },
};
}";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
<span class="atSign">&#64;</span>using System.ComponentModel.DataAnnotations

<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">DataGrid</span> <span class="htmlAttributeName">TItem</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Example</span><span class="quot">&quot;</span>
<span class="htmlAttributeName">Data</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">data</span><span class="quot">&quot;</span>
<span class="htmlAttributeName">Responsive</span>
<span class="htmlAttributeName">ShowPager</span>
<span class="htmlAttributeName">ShowPageSizes</span> <span class="htmlAttributeName">Editable</span><span class="htmlTagDelimiter">&gt;</span>
<span class="htmlAttributeName">Data</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">data</span><span class="quot">&quot;</span>
<span class="htmlAttributeName">Responsive</span>
<span class="htmlAttributeName">ShowPager</span>
<span class="htmlAttributeName">ShowPageSizes</span> <span class="htmlAttributeName">Editable</span><span class="htmlTagDelimiter">&gt;</span>
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">DataGridCommandColumn</span> <span class="htmlAttributeName">TItem</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Example</span><span class="quot">&quot;</span> <span class="htmlTagDelimiter">/&gt;</span>
<span class="htmlTagDelimiter">&lt;/</span><span class="htmlElementName">DataGrid</span><span class="htmlTagDelimiter">&gt;</span>
</pre></div>
Expand All @@ -15,17 +15,39 @@

<span class="keyword">public</span> <span class="keyword">class</span> Example
{
[Order( DisplayOrder = <span class="number">1</span>, EditOrder = <span class="number">2</span> )]
[Display( Name = <span class="string">&quot;Name&quot;</span> )]
<span class="keyword">public</span> <span class="keyword">string</span> FirstName { <span class="keyword">get</span>; <span class="keyword">set</span>; }

[Order( DisplayOrder = <span class="number">2</span>, EditOrder = <span class="number">3</span> )]
<span class="keyword">public</span> <span class="keyword">string</span> LastName { <span class="keyword">get</span>; <span class="keyword">set</span>; }


[Order( DisplayOrder = <span class="number">3</span>, EditOrder = <span class="number">4</span> )]
[Numeric( EnableStep = <span class="keyword">true</span>, ShowStepButtons = <span class="keyword">true</span>, Step = <span class="number">1</span> )]
<span class="keyword">public</span> <span class="keyword">int</span> Age { <span class="keyword">get</span>; <span class="keyword">set</span>; }

[Order( DisplayOrder = <span class="number">5</span>, EditOrder = <span class="number">0</span> )]
<span class="keyword">public</span> Status Status { <span class="keyword">get</span>; <span class="keyword">set</span>; }

[Numeric( EnableStep = <span class="keyword">true</span>, ShowStepButtons = <span class="keyword">true</span>, Step = <span class="number">100</span> )]
[Order( DisplayOrder = <span class="number">4</span>, EditOrder = <span class="number">1</span> )]
<span class="keyword">public</span> <span class="keyword">decimal</span> Balance { <span class="keyword">get</span>; <span class="keyword">set</span>; }

<span class="keyword">public</span> Status Status { <span class="keyword">get</span>; <span class="keyword">set</span>; }
[IgnoreField]
<span class="keyword">public</span> <span class="keyword">string</span> FieldToBeIgnored { <span class="keyword">get</span>; <span class="keyword">set</span>; }

[Order( DisplayOrder = <span class="number">5</span>, EditOrder = <span class="number">0</span> )]
[Display( Name = <span class="string">&quot;Gender&quot;</span> )]
[Select( GetDataFunction = <span class="string">&quot;GetGenders&quot;</span>, TextField = nameof( Blazorise.Shared.Data.Gender.Description ), ValueField = nameof( Blazorise.Shared.Data.Gender.Code ) )]
<span class="keyword">public</span> <span class="keyword">string</span> Gender { <span class="keyword">get</span>; <span class="keyword">set</span>; }

[Order( DisplayOrder = <span class="number">6</span>, EditOrder = <span class="number">6</span> )]
[Display( Name = <span class="string">&quot;DOB&quot;</span> )]
[Date( InputMode = DateInputMode.Date )]
<span class="keyword">public</span> DateOnly DateOfBirth { <span class="keyword">get</span>; <span class="keyword">set</span>; }

<span class="keyword">public</span> IEnumerable&lt;Gender&gt; GetGenders()
=&gt; EmployeeData.Genders;
}

<span class="keyword">public</span> <span class="keyword">enum</span> Status
Expand All @@ -36,12 +58,12 @@

<span class="keyword">private</span> IEnumerable&lt;Example&gt; data = <span class="keyword">new</span> List&lt;Example&gt;()
{
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;John&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Age = <span class="number">30</span>, Balance = <span class="number">1000</span>, Status = Status.Active },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jane&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Age = <span class="number">28</span>, Balance = <span class="number">2000</span>, Status = Status.Active },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Joe&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Age = <span class="number">26</span>, Balance = <span class="number">3000</span>, Status = Status.Inactive },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jill&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Age = <span class="number">24</span>, Balance = <span class="number">4000</span>, Status = Status.Inactive },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jack&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Age = <span class="number">22</span>, Balance = <span class="number">5000</span>, Status = Status.Active },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jen&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Age = <span class="number">20</span>, Balance = <span class="number">6000</span>, Status = Status.Active },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;John&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Gender = <span class="string">&quot;M&quot;</span>, Age = <span class="number">30</span>, Balance = <span class="number">1000</span>, Status = Status.Active, FieldToBeIgnored = <span class="string">&quot;4a92b1ea-e82d-4920-8d22-198a2385945e&quot;</span>, DateOfBirth = <span class="keyword">new</span> DateOnly(<span class="number">1992</span>,<span class="number">03</span>,<span class="number">05</span>) },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jane&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Gender = <span class="string">&quot;F&quot;</span>,Age = <span class="number">28</span>, Balance = <span class="number">2000</span>, Status = Status.Active, FieldToBeIgnored = <span class="string">&quot;cb85ede4-4a66-4ab5-813d-6f09b4781489&quot;</span>, DateOfBirth = <span class="keyword">new</span> DateOnly(<span class="number">1972</span>,<span class="number">03</span>,<span class="number">03</span>) },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Joe&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Gender = <span class="string">&quot;M&quot;</span>,Age = <span class="number">26</span>, Balance = <span class="number">3000</span>, Status = Status.Inactive, FieldToBeIgnored = <span class="string">&quot;0725a26f-1b5c-4659-be06-2b4b108a2fb4&quot;</span>, DateOfBirth = <span class="keyword">new</span> DateOnly(<span class="number">1981</span>,<span class="number">12</span>,<span class="number">05</span>) },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jill&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Gender = <span class="string">&quot;F&quot;</span>,Age = <span class="number">24</span>, Balance = <span class="number">4000</span>, Status = Status.Inactive, FieldToBeIgnored = <span class="string">&quot;bb85d60c-96fa-4137-a9f1-e09ec0497f5d&quot;</span>, DateOfBirth = <span class="keyword">new</span> DateOnly(<span class="number">1980</span>,<span class="number">05</span>,<span class="number">29</span>) },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jack&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>, Gender = <span class="string">&quot;M&quot;</span>,Age = <span class="number">22</span>, Balance = <span class="number">5000</span>, Status = Status.Active, FieldToBeIgnored = <span class="string">&quot;76471dfe-2efd-4ec5-b192-82abc1b05c72&quot;</span>, DateOfBirth = <span class="keyword">new</span> DateOnly(<span class="number">1990</span>,<span class="number">09</span>,<span class="number">10</span>) },
<span class="keyword">new</span>(){ FirstName = <span class="string">&quot;Jen&quot;</span>, LastName = <span class="string">&quot;Doe&quot;</span>,Gender = <span class="string">&quot;F&quot;</span>, Age = <span class="number">20</span>, Balance = <span class="number">6000</span>, Status = Status.Active, FieldToBeIgnored = <span class="string">&quot;be83a3c0-9636-4ebd-acca-08e6ffb5c469&quot;</span>, DateOfBirth = <span class="keyword">new</span> DateOnly(<span class="number">2000</span>,<span class="number">01</span>,<span class="number">01</span>) },
};

}
Expand Down
Loading

0 comments on commit fc88cab

Please sign in to comment.