Skip to main content

Syncfusion Grid, Custom Add Dialog - Two methods

 Method 1 - Using the default Options - ToolbarClickHandler


In the Razor Page


@{
var Toolbar = new List<string>() {"Add", "Search"};

}

<SfGrid DataSource="@Organisations"
TValue="OrganisationList"
Toolbar="@Toolbar"
AllowSelection="true"
AllowPaging="true"
AllowSorting="true">
<GridEditSettings AllowAdding="true" Mode="EditMode.Dialog" >
<Template>
            @{
                var org = (context as OrganisationList); }
Your own code here for the dialog
</GridEditSettings>
         


<GridPageSettings PageSize="20"></GridPageSettings>

<GridEvents OnToolbarClick="ToolbarClickHandler" TValue="OrganisationList"> </GridEvents>

Inside the Grid

In the code:

public async Task ToolbarClickHandler( ClickEventArgs args)
{

if (args.Item.Text == "Add")
{
await CreateNewOrg();
}
}

This method rely relies on you using SyncFusion's calls to create the organisation 

Method 2 - Using the custom handler - ToolbarClickHandler

Design your Dialog using the normal <SfDialog> controls 


<SfDialog @ref="AddEditDialog" Width="500px" Visible="false" ShowCloseIcon="true" IsModal="true">
<DialogEvents Closed="CancelAddEdit"></DialogEvents>
<DialogTemplates>

<Header>
@{
string HeaderText = "";

if (CurrentSelected.PersonGuid.Equals(Guid.Empty))
{
HeaderText = $"Add a new person";
}
else
{
HeaderText = $"Edit: {CurrentSelected.FullName}";
}

}
@HeaderText
</Header>
<Content>
<EditForm Model="@CurrentSelected" OnValidSubmit="@AddEditSaveClick">
<DataAnnotationsValidator />

<div>

<div class="form-row">


<div class="col-6">

<div class="form-group">
<SfTextBox ID="FirstName" @bind-Value="CurrentSelected.FirstName"
FloatLabelType="FloatLabelType.Auto"
Placeholder="@label.Label["FirstName"]">
</SfTextBox>
</div>
@* <ValidationMessage For="@(() => CurrentSelected.FirstName)" /> *@

</div>

<div class="col-6">

<div class="form-group">
<SfTextBox ID="FamilyName" @bind-Value="CurrentSelected.FamilyName"
FloatLabelType="FloatLabelType.Auto"
Placeholder="@label.Label["FamilyName"]">
</SfTextBox>
</div>
</div>
</div>




</div>

@*
TODO: the idea with the validations errors div is that I'll expand
and format the div below to look a little more professional
*@
<div class="py-5">
<ValidationSummary />
</div>


<div class="form-group float-right py-1">
<SfButton OnClick="CancelAddEdit">Cancel</SfButton>
<SfButton Type="Submit" IsPrimary="true">Save</SfButton>
</div>
</EditForm>
</Content>
</DialogTemplates>
</SfDialog>

Create the Grid, but set an OnActionBegin

<SfGrid @ref="PersonGrid" DataSource="@People"
Toolbar="@(new List<string>() { "Add" , "Search" })"
AllowPaging="true"
AllowSorting="true"
TValue="VPersonList">

<GridEvents TValue="VPersonList" OnActionBegin="ActionBegin"></GridEvents>

<GridEditSettings AllowAdding="true" AllowDeleting="true" AllowEditing="true" Mode="EditMode.Dialog">
</GridEditSettings>



In the code look for the RequestType, to determine whether Add, Edit or Delete was selected 
Strangely enough, the request type is not available in the normal process. 

public async Task ActionBegin(SFG.ActionEventArgs<VPersonList> args)
{



// Begin an Add
// RequestType: Syncfusion.Blazor.Grids.Action.Add
// Begin an Edit
// RequestType: Syncfusion.Blazor.Grids.Action.BeginEdit

// Save
// Not handled by this method - not a Grid Event

// Begin a Delete
// RequestType: Syncfusion.Blazor.Grids.Action.Delete

// List / Read
// RequestType: Syncfusion.Blazor.Grids.Action.Refresh


 
if (args.RequestType.Equals(SFG.Action.Add) || args.RequestType.Equals(SFG.Action.BeginEdit))
{
// Cancel the default action ( if not, then the SF default dialog will display ) 

args.Cancel = true;
// Show the desired dialog
 await AddEditDialog.ShowAsync();
}

Comments

Popular posts from this blog

Fixing a https Cert in Windows

 I renewed a https cert today in Windows and had problems with the new Cert sticking in Windows It would add fine, without error, but would disappear when the IIS Server Certificates screen would refresh.  Open the Certificates in MMC (Local Machine) and inspecting the Web Hosting gave a clue, the new certificate was there, but with a key - the private key was missing.  Could be because the original certificate was created on a completely different machine and imported to this new server.  At any rate, a simple certutil command fixed it .  A tip I received from  SSL disappears from the certificate list on Windows server - SSL Certificates - Namecheap.com Key steps are:  Double-click the certificate and go to  Details  tab. In certificate details locate the  Serial Number  field, click on it and copy its value. Open Command Prompt, pressing  Win+R  and typing  cmd , then click  OK In the command prompt type: ...

Ever need to reset a password in Bonobo Git Server ?

So, you've forgotten your password to bonobo git. Step 1: Get access to the sqlite file, probably called something like  Bonobo.Git.Server.db, sitting in the "wwwroot\Bonobo.Git.Server\App_Data" directory. Step 2: Using another tool, generate an md5 hash of your new desired password (as far as I know, sqlite does not have md5 capability) Step 3: Back in sqlite, using SQL, update the relevant user record, something like update User set Password = UPPER( 'thenewMD5hash') where Username = 'admin' ; Step 4: That's it, you are done, log in with your newly found password.

Save Attachments in Outlook automatically

For years I have wanted something to do this, and finally found it. Worked perfectly for me in Outlook 2013  In the end it is so simple. Guide from http://www.pixelchef.net/content/rule-autosave-attachment-outlook and https://msdn.microsoft.com/en-us/library/ee814736.aspx Open the VBA IDE in Outlook. Alt-F11 will do this. Insert the following code to the Modules section. On the left side there is a tree, expand until you find Modules. Then, if there is not a Module item under Modules, create one by right clicking on Modules. Or right click and choose Insert -> Module. Now, paste the text below in the main VBA window. Close the VBA IDE. Create a Rule that calls the script. Tools -> Rules and Alerts -> New Rule... In the first screen of the new rule wizard, choose "Check messages when they arrive". In the second, you could specify certain criteria that the message must match. Tip: Try "with specific words in the message header" and ...