Blazor Syncfusion Grids:Grid.CurrentViewData方法总是返回null



我使用Blazor Server和Syncfusion网格(SfGrid(在页面上的多个网格中显示信息。

我的问题是,在访问@ref属性中引用的网格并使用网格.CurrentViewData方法后,生成的网格对象为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];
}

我使用下面的代码来尝试访问网格,但是它总是空的。

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

相关内容

  • 没有找到相关文章

最新更新