使用类似DevExpress的模板创建TableComponent



我想创建一个TableComponent,它将像DevExpress库一样工作,在那里我们可以做下面这样的代码。我在思考这个代码中的ChildComponents如何将params的值发送到ParentComponent(DxDataGrid(?我试图通过cascadingvalue将引用发送给家长,但不起作用。我在考虑EventCallBack,但在下面的代码中,我们没有分配任何函数,我也不想这样做。。。你知道它是怎么工作的吗?

谢谢你的帮助!

<DxDataGrid DataAsync="@ForecastService.GetForecastAsync"
PageSize="5"
RowRemovingAsync="@OnRowRemoving"
RowUpdatingAsync="@OnRowUpdating"
RowInsertingAsync="@OnRowInserting"
InitNewRow="@OnInitNewRow"
CssClass="mw-1100">
<DxDataGridCommandColumn Width="150px" />
<DxDataGridDateEditColumn Field="@nameof(WeatherForecast.Date)" DisplayFormat="D" EditorFormat="d" EditorDisplayFormat="D" />
<DxDataGridColumn Field="@nameof(WeatherForecast.Forecast)" Caption="Forecast" Width="150px" />
<DxDataGridSpinEditColumn Field="@nameof(WeatherForecast.TemperatureC)" Caption="@("Temp. (x2103)")" TextAlignment="DataGridTextAlign.Left"
Width="150px" />
<DxDataGridComboBoxColumn Field="@nameof(WeatherForecast.CloudCover)" Caption="Cloud Cover" DataAsync="@ForecastService.GetCloudCoverAsync"
TextAlignment="DataGridTextAlign.Left" Width="150px" />
<DxDataGridCheckBoxColumn Field="@nameof(WeatherForecast.Precipitation)" Caption="Precipitation" Width="100px" />
</DxDataGrid>

我在考虑EventCallBack,但在下面的代码中,我们没有分配任何函数,我也不想这样做。

您不必自己在DxDataGrid中设置EventCallBack。这可能是内部完成的。

以下只是基于我在Blazor的知识和我花了两分钟仔细阅读DevExpress库的猜测。

让我们试着了解什么是<DxDataGridComboBoxColumn/>

我猜它是一个表示DataGrid列的组件,该列在其单元格中承载ComboBox控件。

`<DxComboBox/>` (not appearing in your code) is I believe a component 
representing a ComboBox control. Thus, I guess that `<DxDataGridComboBoxColumn/>` is the parent component of `<DxComboBox/>`. Sound reasonable, no? 

现在,我进行了一些搜索,发现了这个代码:

<DxComboBox Data="@(new List<string>() { "In stock", "Sold out" })"
Value="@(((bool)((CellEditContext)context).CellValue) ? "In stock" : "Sold out" )"
ValueChanged="@((string newCellValue) => ((CellEditContext)context).OnChanged(newCellValue == "In stock"))">
</DxComboBox> 

我在这里看到了什么?DxComboBox如何获取其数据(来自内联实例化的List。还有两个属性:ValueValueChangedValue属性表示DxComboBox绑定到的变量,而CCD_ 9属性表示当用户从CCD_。调用此方法是为了通知DxComboBox的父组件某个值已更改,并且必须重新渲染以反映此更改。请注意,该方法的底层类型是EventCallBack。

我给你的建议是去chrissainty.com或blazoruniversity等文档和/或网站,在那里了解更多关于组件、它们如何相互通信、模板化组件等的信息。学习Blazor的基本知识,总有一天你就能自己创建这样的组件。文档中有一个代码示例,说明如何以表的形式创建模板化组件。从那里开始,继续…

查看Blazorise的DataGrid。如果你想推出自己的,你可以在GitHub上查看源代码

相关内容

  • 没有找到相关文章