簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM