Codeer.LowCode.Blazor 1.3.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Codeer.LowCode.Blazor --version 1.3.0
                    
NuGet\Install-Package Codeer.LowCode.Blazor -Version 1.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Codeer.LowCode.Blazor" Version="1.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Codeer.LowCode.Blazor" Version="1.3.0" />
                    
Directory.Packages.props
<PackageReference Include="Codeer.LowCode.Blazor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Codeer.LowCode.Blazor --version 1.3.0
                    
#r "nuget: Codeer.LowCode.Blazor, 1.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Codeer.LowCode.Blazor@1.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Codeer.LowCode.Blazor&version=1.3.0
                    
Install as a Cake Addin
#tool nuget:?package=Codeer.LowCode.Blazor&version=1.3.0
                    
Install as a Cake Tool

Codeer.LowCode.Blazor

Codeer.LowCode.Blazor is a library designed to integrate execution engine-type low-code features into your Blazor app. It allows for the rapid creation of most functionalities using no-code/low-code, while specialized features can be crafted with the same level of detail as full-scratch professional coding. As a result, it is possible to develop satisfactory applications quickly and at a low cost. Users can customize the application themselves after its release.

Codeer.LowCode.Blazor.Templates

  • Want to save on cost and time
  • Want to effectively utilize RDB
  • Want to leverage existing data and systems
  • Have specific features in mind
  • Desire customization after release

Create Screens with Ease

Create screens freely with a combination of canvas layout and grid layout and flow layout. It's possible to create not just regular screens but also dialogs. Interaction between UI components can be achieved with no-code or minimal scripting. Essential elements like sidebar, header, and footer are provided, and those with specific preferences can customize with pro-code.

Seamless RDB Integration

Associate forms and DB tables for input and output of data. Linking multiple forms allows representation of Join or 1N relationships. Forms can also be linked to Views, enabling easy implementation of BI functions. Common database operations such as logical deletion, optimistic locking, and tracking of creation/update information are included. Change history can also be maintained.

More Freedom with Scripts

Write in syntax nearly identical to C#. The API design allows for implementation of features with minimal coding. Code completion makes implementation easy, and customized functions can be called with pro-code. Execution is primarily on the client-side, but server-side execution is also supported.

  • General computational operations
  • Screen controls
  • Execution of WebAPI
  • Editing Excel/PDF creation

Excel Integration Support

Supports not only general data input/output but also allows for creating templates in Excel and modifying them for report generation. Conversion to PDF is also possible.

Authentication & Authorization

Provide generic cookie authentication or default authentication using Azure Active Directory in your template code. Other authentication methods can also be customized. Authorization allows for access control at the application, screen, and data levels.

Implement Specific Features with Pro-Code

In some cases, special screens/features are necessary. As Codeer.LowCode.Blazor is a Blazor library, .NET code can be added for such implementations. Moreover, creating components allows for their use in various places.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on Codeer.LowCode.Blazor:

Package Downloads
Codeer.LowCode.Blazor.Designer

This is a library that adds LowCode functionality to Blazor apps.

Codeer.LowCode.Bindings.Blazor-ApexCharts

You can use Blazor-ApexCharts with Codeer.LowCode.Blazor.

Codeer.LowCode.Bindings.Blazor-ApexCharts.Designer

You can use Blazor-ApexCharts with Codeer.LowCode.Blazor.

Codeer.LowCode.Bindings.Fluent.Blazor

You can use FluentUI with Codeer.LowCode.Blazor.

Codeer.LowCode.Blazor.Extras

Extra field components for Codeer.LowCode.Blazor. Includes Calendar, Gantt Chart, Task Board (Kanban), Rich Text Editor, Color Picker, Marker List, and Password Hash fields.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.1 79 6/4/2026
1.3.0 77 6/4/2026
1.2.65 120 5/26/2026
1.2.64 116 5/15/2026
1.2.63 114 5/12/2026
1.2.62 106 5/7/2026
1.2.61 211 5/6/2026
1.2.60 103 5/5/2026
1.2.59 95 5/5/2026
1.2.58 354 4/27/2026
1.2.57 103 4/21/2026
1.2.56 172 4/16/2026
1.2.55 222 4/10/2026
1.2.54 121 4/2/2026
1.2.53 217 3/31/2026
1.2.52 122 3/24/2026
1.2.51 149 3/16/2026
1.2.50 162 3/9/2026
1.2.49 170 2/24/2026
1.2.48 124 2/20/2026
Loading failed

This release adds device/screen-size landing for page frames, proportional column scaling, list replace modes, and real-time cascading select fields, and unifies the type-conversion rules of the scripting engine. It includes breaking changes that may affect existing scripts.

[ New Features ]

- Page Frames: Application-root page frames can now be selected by device and screen size. Each page frame has a TargetDevice (Any / PC / Touch) and a WidthFrom (minimum screen width). On root-URL access (for example after login), the page frame that matches the current device and screen width is opened; among the matches the largest WidthFrom that fits wins, and ties are broken by Priority. Existing apps are unaffected (defaults are Any and no width).
- Grid Layout: Added IsProportionalScale on grid rows. When enabled, each column's Width is treated as a ratio rather than a fixed pixel size, so the columns grow and shrink proportionally as the row width changes. (Every column in the row must have a Width; MinWidth / MaxWidth, column resize, wrapping, and flow layout cannot be combined with this mode.)
- List Field: Added a ReplaceMode (data replacement). "All" deletes all rows matching the search condition and re-inserts the current rows; "UpdateAsDeleteInsert" turns updates into delete-then-insert so that swapping unique-key values between rows no longer hits constraint violations. The default ("None") keeps the previous add/update/delete behavior.
- Number Field: Added an OnInput event that fires in real time on every keystroke (and continuously while dragging a slider), before the value is committed and OnDataChanged fires. The script function receives the in-progress value as an argument ("void Func(decimal? value)"; null while the input cannot be parsed as a number). The field's Value itself is still updated only when the input is committed, as before.
- Select Field: Cascading (dependent) select fields now refresh their candidates in real time when the field they depend on changes, and a selected value that is no longer a valid candidate is cleared automatically.
- Select Field: A loaded value that is not among the current candidates is now added to the candidate list (shown with its stored display text) and kept selected, so opening existing data no longer blanks the display or silently changes the stored value. The value also survives candidate reloads (cascading refresh, SetCandidates) as long as it is unchanged; once the user selects a different value, out-of-candidate values are cleared as before. If the display text collides with an existing candidate, the value is shown in parentheses after the text (with a numbered suffix if still ambiguous).

[ Breaking Changes ]

- Scripting: Converting a fractional number to an integer type now truncates toward zero instead of rounding (matching C# cast semantics). This applies consistently to assignments, initializers, casts, function arguments, and return values. For example, (int)1.9 and "int x = 1.9;" now yield 1 (previously 2).
- Scripting: Converting a non-null value that cannot be converted into a non-nullable type now raises a runtime error. In particular, reassigning an unconvertible value to a typed variable previously became null silently; it now raises an error. (Assigning null to a non-nullable value type still produces its default value, for example "int x = null;" yields 0 and "DateTime x = null;" yields DateTime.MinValue; conversion into a nullable type still results in null.)
- Scripting: Casting a string to a numeric type now performs the conversion instead of returning the string unchanged. For example, (int)"5" now yields 5.
- Scripting: (int)null now yields 0 instead of null, consistent with "int x = null;".
- Scripting: Fixed numeric widening in method overload resolution. Previously the widening check used an incorrect type order, so passing byte / sbyte / short / ushort / uint arguments could select an unintended overload. It now follows C# implicit numeric conversion rules, which may change which overload is chosen for such calls (cast the argument explicitly to pin the overload).

[ Bug Fixes ]

- Scripting: == and != comparisons between decimal and double / float no longer raise an error (for example, comparing a number field with a literal such as 1.5).
- Scripting: A fractional-format string assigned or cast to an integer type is now converted by truncation instead of raising an error (for example, "int x = "1.9";" yields 1).
- Search: A NotIn condition with an empty value list now matches all rows instead of none, consistent with in-memory matching. This affects both C# data-access queries and designer-defined search conditions.
- Sidebar/Menu: Links pointing to a page frame that the current user cannot access are now hidden, consistent with the existing behavior for links to inaccessible modules. Previously such page-frame links stayed visible and only showed an access-denied message when clicked.
- ExecuteSql: Fixed a defect where the DataReader was not disposed for the Reader method type, which could leave the connection busy and block subsequent commands on the same connection/transaction.
- ExecuteSql: Input and write-back now use the data member mapped to the DB column instead of always using Value, so fields whose stored value is not Value (for example a File field's file name) are read and written correctly.
- Search Layout: Fixed handling when a search layout references a missing or invalid layout name.
- Search Layout: Fixed an exception that occurred when a Link field was set to read-only in a search layout.

[ Other ]

- Scripting: Added sbyte as a supported type keyword.
- Data access (C#): Added a Take extension to the typed SearchCondition for limiting the number of rows fetched.
- Page Frames: Added a Priority setting. When a user can access more than one application-root page frame, the one with the highest Priority opens first; equal values keep the defined order. Existing apps are unaffected (the default of 0 preserves the previous order-based behavior).
- Data access (C#): SearchDelete now blocks dangerous empty executions. Deleting with no search condition raises an error, and deleting every row must be requested explicitly, to prevent accidentally wiping out an entire table.
- Fields: A field whose IsEnabled is false now shows the standard disabled (gray) background, in both list cells and detail layouts, so it is visually distinct from a read-only (transparent) field. This applies to all UI field types (text, number, select, boolean, radio, date/time, link, button, file). In a list cell the gray fills the whole cell; in a detail layout it covers the control area.
     To restore the previous appearance (disabled = no background), add the following to your project's app.css (it can also be placed in a PageFrames/{name}.css side-car file to revert only that page frame):

       #app td input.form-control:disabled,
       #app td textarea.form-control:disabled,
       #app td select.form-select:disabled,
       #app td .cl-disabled-bg,
       #app td .link-field-container.disabled,
       #app td button.btn-outline-secondary:disabled {
         background: transparent !important;
       }

       #app td .cl-disabled-bg-fill::before {
         background: transparent !important;
       }