我想创建一个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。还有两个属性:Value
和ValueChanged
Value
属性表示DxComboBox
绑定到的变量,而CCD_ 9属性表示当用户从CCD_。调用此方法是为了通知DxComboBox
的父组件某个值已更改,并且必须重新渲染以反映此更改。请注意,该方法的底层类型是EventCallBack。
我给你的建议是去chrissainty.com
或blazoruniversity等文档和/或网站,在那里了解更多关于组件、它们如何相互通信、模板化组件等的信息。学习Blazor的基本知识,总有一天你就能自己创建这样的组件。文档中有一个代码示例,说明如何以表的形式创建模板化组件。从那里开始,继续…
查看Blazorise的DataGrid。如果你想推出自己的,你可以在GitHub上查看源代码