[英]Blazor Syncfusion Grids: The Grid.CurrentViewData method always returns null
我正在使用 Blazor 服務器和 Syncfusion 網格 (SfGrid) 在頁面上的多個網格中顯示信息。
我的問題是在我訪問@ref 屬性中引用的網格並使用grid.CurrentViewData方法后,生成的網格 object 是 null。
=====示例工作流程======
用戶通過使用每個網格的復選框列來指示要保存的項目。
當我在保存例程中抓取網格時,要檢查檢查了哪些行,網格始終是 null。
這是我的代碼。
@foreach(var item in items_to_display)
<SfGrid @ref=get_mygrid(item.name) DataSource="@Items" AllowTextWrap="true"
AllowSorting ="false" AllowFiltering="false" AllowPaging="true" Width="100%"
EnableAltRow="true" >
<GridTextWrapSettings WrapMode="WrapMode.Content"></GridTextWrapSettings>
<GridPageSettings PageSize=10></GridPageSettings>
<GridSelectionSettings CheckboxMode="CheckboxSelectionType.ResetOnRowClick"
CheckboxOnly="false" PersistSelection="true"></GridSelectionSettings>
<GridEvents TValue="Item" OnActionFailure="@ActionFailure"></GridEvents>
<GridColumns>
<GridColumn Field=@nameof(Item.Selected) Width="10px" >
<Template>
@{
var item = (context as Item);
<SfCheckBox Checked="item?.Selected"></SfCheckBox>
}
</Template>
</GridColumn>
<GridColumn Width="30px" Field=@nameof(Item.Group) HeaderText="Section"></GridColumn>
<GridColumn Width="10px" Field=@nameof(Item.ItemName) HeaderText="ITEM"></GridColumn>
<GridColumn Width="120px" Field=@nameof(Item.Description) HeaderText="DESCRIPTION"> </GridColumn>
</GridColumns>
</SfGrid>
我在網格中的@ref 屬性中使用的網格對象...
private Dictionary<string, SfGrid<Items>> myGrids = new Dictionary<string, SfGrid<Items>>();
public SfGrid<Items> get_mygrid(string gridName)
{
if (!(myGrids.Keys.Contains(gridName)) )
myGrids.Add(gridName, new SfGrid<Item>());
return myGrids[gridName];
}
我使用以下代碼嘗試訪問網格,但它始終是 null。
foreach(var gridkey in myGrids.Keys)
{
var grid = myGrids[gridkey].CurrentViewData as IEnumerable<object>;
//=========grid is null here ===================
}
您可以在渲染時直接使用字典項來引用而不是使用方法。 我們直接修改了示例以訪問 mygrid 變量。 請檢查隨附的代碼片段和示例以供參考。
<SfButton OnClick="clicked" Content="Click"></SfButton>
@foreach (var d in Data)
{
<SfGrid DataSource="@Orders" @ref="myGrids[d]" AllowTextWrap="true" AllowSorting ="false" AllowFiltering="false" AllowPaging="true" Width="100%" EnableAltRow="true">
<GridTextWrapSettings WrapMode="WrapMode.Content"></GridTextWrapSettings>
<GridPageSettings PageSize=10></GridPageSettings>
<GridColumns>
</GridColumns>
</SfGrid>
}
@code {
public List<Order> Orders { get; set; }
public List<string> Data = new List<string>() { "First", "second" };
private Dictionary<string, SfGrid<Order>> myGrids = new Dictionary<string, SfGrid<Order>>();
public void clicked()
{
foreach (var gridkey in myGrids.Keys)
{
var grid = myGrids[gridkey].CurrentViewData as IEnumerable<object>;
}
}
}
樣品: https://www.syncfusion.com/downloads/support/directtrac/general/ze/DataGrid362229114.zip
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.