I have a basic .net8 project , the VS template one, I following the instructions to hook up telerik to it.
The btn works.
I then added a grid, which shows up, but I see no records in it. I dont see what I am doing wrong.
razor page:
@page "/GridTester"
<h3>GridTesting</h3>
<h1>@strTaskDone</h1>
<TelerikLoaderContainer Visible="@ldrVisible" Class="no-panel">
<Template>
<TelerikLoader></TelerikLoader>
<div>
<span></span>
<span>Please wait, I am currenlty working on it...</span>
</div>
</Template>
</TelerikLoaderContainer>
<TelerikGridLayout>
<GridLayoutColumns>
<GridLayoutColumn Width="100%"></GridLayoutColumn>
</GridLayoutColumns>
<GridLayoutRows>
<GridLayoutRow Height="@strAppMsgHT"></GridLayoutRow> @*App Msg*@
<GridLayoutRow Height="@strGridHT"></GridLayoutRow> @*Report Grids *@
</GridLayoutRows>
<GridLayoutItems>
<GridLayoutItem Row="1" Column="1" >
<TelerikButton OnClick="@SayHelloHandler"
ThemeColor="@ThemeConstants.Button.ThemeColor.Primary">Say Hello</TelerikButton>
</GridLayoutItem>
<GridLayoutItem Row="2" Column="1" ColumnSpan="2">
<TelerikGrid @ref="@gridOrderListDetails"
Data="@grdOrderListDetails"
AutoGenerateColumns="true"
Width="800px"
Pageable="true"
Sortable="true"
FilterMode="@GridFilterMode.FilterRow">
</TelerikGrid>
</GridLayoutItem>
</GridLayoutItems>
</TelerikGridLayout>
code behind stuff for the Grid:
public TelerikGrid<rtpOrderListDetailsResults> gridOrderListDetails { get; set; } // grid on the webpage
private List<rtpOrderListDetailsResults> grdOrderListDetails { get; set; }
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(strCMDToRun, con);
da.SelectCommand.CommandTimeout = 540000;
da.Fill(dt);
foreach (DataRow row in dt.Rows)
{
if (dt.Columns.Count == 1)
{
ResultRow = new rtpOrderListDetailsResults();
ResultRow.PON = row["Result"] as string;
}
else
{
ResultRow = new rtpOrderListDetailsResults();
ResultRow.PON = row["PON"] as string;
ResultRow.Customer_ID = (Int64)row["Customer_ID"];
ResultRow.Customer_Name_Billing = row["Customer_Name_Billing"] as string;
ResultRow.Parent_Name = row["Parent_Name"] as string;
ResultRow.TN = row["TN"] as string;
ResultRow.Nbr_Of_Actual_Lines = (Int32)row["Nbr_Of_Actual_Lines"];
if (row["CreatedDT"] != DBNull.Value)
{
d = DateOnly.FromDateTime((DateTime)row["CreatedDT"]);
ResultRow.CreatedDT = d;
};
if (row["DueDT"] != DBNull.Value)
{
d = DateOnly.FromDateTime((DateTime)row["DueDT"]);
ResultRow.DueDT = d;
};
ResultRow.Current_Status = row["Current_Status"] as string;
if (row["Current_StatusDT"] != DBNull.Value)
{
d = DateOnly.FromDateTime((DateTime)row["Current_StatusDT"]);
ResultRow.Current_StatusDT = d;
};
// ResultRow.Current_StatusDT = row["Current_StatusDT"] as DateTime?;
ResultRow.Provisioner_Assigned = row["Provisioner_Assigned"] as string;
ResultRow.Agent_Is = row["Agent_Is"] as string;
ResultRow.Carrier = row["Carrier"] as string;
ResultRow.Carrier_ID = (Int32)row["Carrier_ID"];
ResultRow.Provisioning_Process = row["Provisioning_Process"] as string;
ResultRow.Class = row["Class"] as string;
ResultRow.Provisioning_Age_Days = (Int32)row["Provisioning_Age_Days"];
ResultRow.Order_Type = row["Order_Type"] as string;
ResultRow.Line_Type = row["Line_Type"] as string;
ResultRow.Line_Description = row["Line_Description"] as string;
ResultRow.State = row["State"] as string;
ResultRow.Open_Related_Orders = row["Open_Related_Orders"] as string;
ResultRow.Channel = row["Channel"] as string;
ResultRow.Bill_Profile = row["Bill_Profile"] as string;
ResultRow.MRC_ChargesAmt = (decimal)row["MRC_ChargesAmt"];
ResultRow.MRC_Line_ChargesAmt = (decimal)row["MRC_Line_ChargesAmt"];
ResultRow.Cancel_Reason = row["Cancel_Reason"] as string;
ResultRow.Hold_Reason = row["Hold_Reason"] as string;
ResultRow.Prime = row["Prime"] as string;
ResultRow.Cycle_Is = (Int32)row["Cycle_Is"];
// ResultRow.Impacted_By_COVID19 = row["Impacted_By_COVID19"] as string;
ResultRow.Term_Nber_Of_Months = (Int32)row["Term_Nber_Of_Months"];
ResultRow.Upload = row["Upload"] as string;
ResultRow.Download = row["Download"] as string;
ResultRow.AMProjectManager = row["AMProjectManager"] as string;
RptResults.Add(ResultRow);
};
};
grdOrderListDetails = RptResults;
if (gridOrderListDetails.Data.Count() > 0)
{
gridOrderListDetails.AutoFitAllColumns();
};
if (grdOrderListDetails.Count > 0)
{
strTaskDone = "Completed";
}
else
{
strTaskDone = "Me Sad";
};
This has data: grdOrderListDetails.Count
But this is NULL: gridOrderListDetails.Data
Why?
Hello,
i´m evaluating Telerik UI for Blazor.
Maybe you can help me:
it is possible to bind a WebGrid IgbGrid to a Web-DropDown with full Grid-FUncrtionality like sorting, grouping, filtering? Attached you find a sample of the Use-Case.
Hy,
I created a generic class for telerik grids to manage different data models.
In this class I use OnRead event for reading data :
protected async Task OnReadHandlerAsync(GridReadEventArgs args)
{
try
{
var query = Service.QueryDto();
query = DefaultFilterCondition is not null ? query.Where(DefaultFilterCondition) : query;
var dataSourceResult = await query.ToDataSourceResultAsync(args.Request);
if (args.Request.Aggregates.Any())
{
args.AggregateResults = dataSourceResult.AggregateResults;
}
args.Data = dataSourceResult.Data;
args.Total = dataSourceResult.Total;
}
catch (Exception ex)
{
NotificationService.Error(ex.Message);
}
}
As you can see I use the ToDataSourceResult extension on a variable of type IQueryable<TDto> for automatic sorting, filtering,paging,...
But now I have a problem: I created a grid that contains aggregates, now for this TelerikGrid the application throws the "must be reducible node exception" when the "ToDataSourceResult" is executed on the IQueyable<TDto> variable.
My TelerikGrid with aggregates:
@inherits GridReadOnlyComponentBase<SimulationResultService,SimulationResultDto>
<TelerikGrid Id="simulationresultgrid"
@ref="GridRef"
TItem="SimulationResultDto"
OnStateInit="@OnStateInitHandler"
FilterMode="@GridFilterMode.FilterRow"
EditMode="@GridEditMode.None"
SelectionMode="@GridSelectionMode.None"
Sortable="@true" SortMode="@SortMode.Single"
Groupable="@true" LoadGroupsOnDemand="@false"
Reorderable="@false"
OnRead="@OnReadHandlerAsync">
<GridAggregates>
<GridAggregate Field="@nameof(SimulationResultDto.ActualSales)" Aggregate="@GridAggregateType.Sum" FieldType="typeof(decimal)" />
<GridAggregate Field="@nameof(SimulationResultDto.YearImpact)" Aggregate="@GridAggregateType.Sum" FieldType="typeof(decimal)" />
<GridAggregate Field="@nameof(SimulationResultDto.ChangesImpact)" Aggregate="@GridAggregateType.Sum" FieldType="typeof(decimal)" />
</GridAggregates>
<NoDataTemplate>
<strong>@(_simulationId > 0 ? "Nessun dato presente,eseguire prima una simulazione" : "Scegli la simulazione")</strong>
</NoDataTemplate>
<GridToolBarTemplate>
<span class="k-toolbar-spacer" />
<SimulationSelect SelectedValue="_simulationId" SelectedValueChanged="SimulationIdChanged" Width="30%" />
</GridToolBarTemplate>
<GridColumns>
<GridColumn Field="@nameof(SimulationResultDto.ActualSales)"
Title="Fat. attuale"
Width="200px" DisplayFormat="{0:C}"
Filterable="false"
Groupable="false">
<GroupFooterTemplate>
TOT: <TelerikNumericTextBox Width="80%" ReadOnly="@true" Arrows="@false" Decimals="2" Format="C" @bind-Value="@context.Sum" />
</GroupFooterTemplate>
</GridColumn>
</GridColumns>
I know that a solution could be to run the ToList before running the ToDataSourceResult but I would like to know if there is another solution as I work with a large amount of data.
Thanks
I just updated our .NET 8 Blazor webapp from Telerik 5.0.1 to 5.1.1. Now, interacting with any input in a form applies validation classes to all other inputs in the form. I hope this behavior is unintentional as it could lead to user confusion. I believe this was introduced in the 5.0.1 update which was supposed to fix the issue of validation classes being present on initial render. I could find no other documentation or discussion regarding this.
This behavior can be seen in the Form - Validation demo...
Blazor Form Demos - Validation | Telerik UI for Blazor
Type valid input in the Graduate Grade field and all other fields turn green even though they don't have valid input...
Clicking Submit to show that those fields are not valid.
Hello I have a grid which has a "Add" button which is defined in a GridBarToolBarTemplate which opens a pop up used for adding a new record displaying in the Grid.
With Blazor .Net 8 I am using Stream rendering to show the grid.
I now want to put the add button in a different component so I can use another "Interactive" rendering mode just for adding a new record
I have tried during this but it doesnt seem to work. Is this possible? and how do Iget it to work?
Thanks
Aj
I'm using a "hierarchical" TelerikContextMenu (example below). I want to detect if the SHIFT key was depressed when an item (i.e., ItemA1 or ItemB2) is clicked (detecting the difference between click and SHIFT-click).
I can detect if the shift key is depressed in the @oncontextmenu event, but that is for the click invoking the context menu. I want a similar capability when selecting an item IN the context menu.
Any suggestions?
The context menu is structured like this:
ItemA ItemA1 ItemA2 ItemB ItemB1 ItemB2