Something like this. Is it simply to wrap the card in a <div> and use css?
Hi,
I need to calculate a grouping value by myself as the standard GridAggregateTypes are not suitable in my case (I need to calculate a percentage based on the aggregated values of other columns in the same grouping).
This is possible for the GridFooterTemplate as the GridGroupTemplateContext provides the AggregateResults from which I can calculate the value to be shown.
However, the GridGroupTemplateContext provided by the GroupFooterTemplate does not provide such a property.
Any kind of solution is helpful, even if it is a dirty workaround.
Thank you very much and best regards - Richard
I have a TreeView with 2 Levels (I changed your RefreshData example to work with 2 levels and ObservableCollections):
<h3>TreeView</h3>
Hierarchical data hold collections of the child items
<TelerikButton OnClick="@AddRoot">Add root</TelerikButton>
<TelerikButton OnClick="@AddItem">Add child</TelerikButton>
<TelerikButton OnClick="@RemoveItem">Remove child</TelerikButton>
<TelerikTreeView Data="@HierarchicalData" @bind-ExpandedItems="@ExpandedItems">
<TreeViewBindings>
<TreeViewBinding TextField="Category" ItemsField="Products" />
<TreeViewBinding Level="1" TextField="ProductName" />
</TreeViewBindings>
</TelerikTreeView>
@code {
public IList<ProductCategoryItem> HierarchicalData { get; set; }
public IEnumerable<object> ExpandedItems { get; set; } = new List<object>();
void AddItem()
{
var firstItem = HierarchicalData.First();
firstItem.Products.Add(
new ProductItem
{
ProductName = "New Item"
});
StateHasChanged();
}
void AddRoot()
{
HierarchicalData.Add(new ProductCategoryItem { Category = "New Category" });
StateHasChanged();
}
void RemoveItem()
{
var firstItem = HierarchicalData.First();
if (firstItem.Products.Count > 0)
{
firstItem.Products.RemoveAt(firstItem.Products
.IndexOf(firstItem.Products.Last()));
StateHasChanged();
}
}
public class ProductCategoryItem
{
public string Category { get; set; }
public IList<ProductItem> Products { get; set; }
}
public class ProductItem
{
public string ProductName { get; set; }
}
protected override void OnInitialized()
{
LoadHierarchical();
ExpandedItems = HierarchicalData.Where(x => x.Products != null && x.Products.Any()).ToList();
}
private void LoadHierarchical()
{
var roots = new ObservableCollection<ProductCategoryItem>();
var firstCategoryProducts = new ObservableCollection<ProductItem>()
{
new ProductItem { ProductName= "Category 1 - Product 1" },
new ProductItem { ProductName= "Category 1 - Product 2" }
};
roots.Add(new ProductCategoryItem
{
Category = "Category 1",
Products = firstCategoryProducts // this is how child items are provided
});
roots.Add(new ProductCategoryItem
{
Category = "Category 2" // we will set no other properties and it will not have children, nor will it be expanded
});
HierarchicalData = roots;
}
}
If I "add child" then the TreeView is not updated, Even after collapsing and re-expanding the root node, the newly added child item is not shown.
Notification works only on the first level ("add root") which also updates the child items.
I'm integrating bUnit to add unit test to blazor.
Now i have a form with some TelerikTextBox and other components with DataAnnotationValidation.
Example:
<TelerikTextBox Id="txtUserName" @bind-Value="@EditingItem.UserName"></TelerikTextBox>
When i set the input value from bUnit with cut.Find("#txtUserName").Input("UnitTest_User"); the binding property EditingItem.UserName is not updated successully due to default value of DebounceDelay property who is set to 150ms.
This cause the subsequent validation of the form to fail.
I have open an issue on bUnit project with some sample code, thinking originally who was a bUnit issue, but we found who it's related to telerik components:
https://github.com/bUnit-dev/bUnit/discussions/651
Note iIf i set the property DebounceDelay="0" on the TelerikTextBox the binding and validation work fine, but it require to change all the components to work with tests.
I think we need a settings from telerik blazor components who can allow reset DebounceDelay for all components, before run unit test.
I have a checkbox in a grid (Telerik Grid for Blazor). When I click the checkbox (using incell editing) the value changes however it does not save to the database and if I leave the page and come back the data is back to the old values.
This is the code for the grid:
<TelerikGrid Class="custom-icons" Data="@OfficesList"
Reorderable = "true"
EditMode = "@GridEditMode.Incell"
Sortable = "true"
Pageable = "true"
SelectionMode = "GridSelectionMode.Multiple"
OnUpdate = "@UpdateItem"
@ref="OfficeListGrid"
@bind-SelectedItems="@SelectedItems">
<DetailTemplate Context="office">
<Incumbents Office="@office"></Incumbents>
</DetailTemplate>
<GridColumns>
<GridCommandColumn Context="OfficeCommandsContext">
<GridCommandButton Command="Edit" Class="btn btn-sm btn-primary" Icon="edit">Edit</GridCommandButton>
</GridCommandColumn>
<GridColumn Field="@nameof(GetOfficesResult.OfficeName)" Title="Office" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.OfficeSeqNum)" Title="Office Sequence #"Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.IsVacant)" Title="Is Vacant" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.IsPrimaryPartisan)" Title="Is Primary Partisan" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.IsPrimaryNonPartisan)" Title="Is Primary Non Partisan" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.PrimaryDistrictType)" Title="Primary Voting District Type" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.PrimaryDistrictCode)" Title="Primary Voting District" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.IsGeneral)" Title="Is General Ballot" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.GeneralDistrictType)" Title="General Voting District Type" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.GeneralDistrictCode)" Title="General Voting District" Editable="false" />
<GridColumn Field="@nameof(GetOfficesResult.CanFileAgain)" Title="Can File Again?" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.TermLength)" Title="Term Length" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.FilingDistrictType)" Title="General Voting District Type" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.FilingDistrictCode)" Title="General Voting District" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.SalaryType)" Title="Salary Type" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.Salary)" Title="Salary" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.FilingFee)" Title="Filing Fee" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.NextElection)" Title="Next Election" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.Notes)" Title="Notes" Editable="false"/>
<GridColumn Field="@nameof(GetOfficesResult.FederalOnly)" Title="Is Federal Only" />
</GridColumns>
</TelerikGrid>
This is the code behind for the Update Item:
public async Task UpdateItem(GridCommandEventArgs args)
{
var currState = OfficeListGrid.GetState();
GetOfficesResult offices = (GetOfficesResult)args.Item;
////Reset any current editing
currState.EditField = null;
currState.OriginalEditItem = null;
//Reset any current insertion
currState.InsertedItem = null;
//Add the item to edit to the state
var target = OfficesList.FirstOrDefault(o => o.OfficeID == offices.OfficeID);
if (target != null)
{
target.OfficeID = offices.OfficeID;
target.OfficeName = offices.OfficeName;
target.FilingDistrictCode = offices.FilingDistrictCode;
target.FilingDistrictType = offices.FilingDistrictType;
target.PrimaryDistrictCode = offices.PrimaryDistrictCode;
target.PrimaryDistrictType = offices.PrimaryDistrictType;
target.GeneralDistrictCode = offices.GeneralDistrictCode;
target.GeneralDistrictType = offices.GeneralDistrictType;
target.IsVacant = offices.IsVacant;
target.IsPrimaryPartisan = offices.IsPrimaryPartisan;
target.IsPrimaryNonPartisan = offices.IsPrimaryNonPartisan;
target.IsGeneral = offices.IsGeneral;
target.OfficeSeqNum = offices.OfficeSeqNum;
target.CanFileAgain = offices.CanFileAgain;
target.TermLength = offices.TermLength;
target.SalaryType = offices.SalaryType;
target.Salary = offices.Salary;
target.FilingFee = offices.FilingFee;
target.NextElection = offices.NextElection;
target.Notes = offices.Notes;
target.FederalOnly = offices.FederalOnly;
}
offices = args.Item as GetOfficesResult;
GetOfficesResult originalItem = OfficesList.Where(itm => itm.OfficeID == offices.OfficeID).FirstOrDefault();
GetOfficesResult itemToEdit = GetOfficesResult.GetClonedInstance(originalItem);
await OfficeListGrid.SetState(currState);
SelectedItems = OfficesList;
AddToSelectedCollection(itemToEdit);
//Use the state to remove the edited item and close the editor
//currState.EditField = null;
//currState.OriginalEditItem = null;
await OfficeListGrid.SetState(currState);
await RebindGrid();
}
I am not sure why it doesn't save
Thank you in advance
Max
The second level of Context Menu never pops up, always down, even if there is no space to do so.
It seems like the first level will pop up if there isn't enough room below the menu to show the items. However, the second level always appears below the menu that was expanded.
Demo here:
https://demos.telerik.com/blazor-ui/contextmenu/overview
Make your window not very tall, so the "clickable" part (that says "Right-click to open Context menu" is barely visible at the bottom of the screen").
Then right-click; and hover over "Style". The sub menu appears below the word "Style", and is cut off by the bottom of the window. It should know that there is no space down there, and pop "up".
What can I do to fix this?
Thanks!
Hello,
I'd like to apply custom width on the dropdown element for the filter row in grid component. The last column in our project is wide enough for the cell content but not wide enough for the filter row dropdown. I was wondering if it'd be possible to target a `.k-animation-container` element that is connected to the dropdown. Here's a demo that shows the issue.
Result I'd like to get:
Kind regards,
Greg
For example, when the user clicks on a button inside (or outside) the Window, I maximize or minimize the Window. Something like window.Maximize();
The specific use case here is when the user loads data, I want to automatically maximize the Window for them. It is difficult for the user to find the maximize button because the window width becomes greater than the browser window and they have to drag the window to find the maximize button and click it.