c# - Syncfusion数据网格如何获取用户单击的单元格的值
问题描述
使用 Xamarin 的 Syncfusion 数据网格形成如何获取单元格值的内容。我已经包含了 Syncfusion 提供的网格事件。
https://help.syncfusion.com/xamarin/datagrid/grid-events
<sfgrid:SfDataGrid x:Name="sfGrid"
AllowSorting="True"
ColumnSizer="Star"
AllowDraggingRow="True"
SelectedIndex="2"
AllowResizingColumn="True"
SelectionMode="Single"
AllowEditing="True"
NavigationMode="Cell"
AllowKeyboardNavigation="True"
AutoGenerateColumns="False"
ItemsSource="{Binding Students}">
<sfgrid:SfDataGrid.Columns x:TypeArguments="syncfusion:Columns">
<sfgrid:GridTextColumn HeaderText="First Name"
MappingName="FirstName" />
<sfgrid:GridTextColumn HeaderText="Last Name"
MappingName="LastName" />
<sfgrid:GridTextColumn HeaderText="TB"
MappingName="TB" />
<sfgrid:GridTextColumn HeaderText="PU"
MappingName="PU" />
</sfgrid:SfDataGrid.Columns>
</sfgrid:SfDataGrid>
例如,用户点击 TB 的单元格,在第 2 行该值为 108.7,我想获得该值。
public AcitivtyListPage()
{
InitializeComponent();
this.BindingContext = new StudentsViewModel();
sfGrid.CurrentCellActivated += SfGrid_CurrentCellActivated;
}
}
我尝试查看 CurrentCellActivated 但它似乎没有选定的单元格值对象。
private void SfGrid_CurrentCellActivated(object sender, Syncfusion.SfDataGrid.XForms.CurrentCellActivatedEventArgs e)
{
var item = sfGrid.GetSelectedCells();
}
我也尝试了这个示例,但它不适用于控件的更新版本,某些方法不再存在。
https://www.syncfusion.com/kb/7436/how-to-get-the-cell-value-of-specific-row-and-column
当红色框围绕网格单元格时,该图形应该解释它,我想要的值包含在该单元格中,请参见下图。
解决方案
您可以在 CurrentCellActivated 事件上使用 SfDataGrid 的 GetCellValue() 方法获取当前单元格值。请参考下面的代码片段。
代码片段:
<syncfusion:SfDataGrid x:Name="dataGrid" SelectionMode="Single" NavigationMode="Cell" CurrentCellActivated="dataGrid_CurrentCellActivated" AutoGenerateColumns="False" ItemsSource="{Binding mycollect}" ColumnSizer="Star">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridTextColumn LoadUIView="True" MappingName="No_1"></syncfusion:GridTextColumn>
<syncfusion:GridTextColumn LoadUIView="True" MappingName="No_1"></syncfusion:GridTextColumn>
<syncfusion:GridTextColumn LoadUIView="True" MappingName="No_1"></syncfusion:GridTextColumn>
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
....
private void dataGrid_CurrentCellActivated(object sender, CurrentCellActivatedEventArgs e)
{
var dataRow = dataGrid.GetRowGenerator().Items.FirstOrDefault(x => x.RowIndex == e.CurrentRowColumnIndex.RowIndex);
var CellValue = dataGrid.GetCellValue(dataRow.RowData, dataGrid.Columns[e.CurrentRowColumnIndex.ColumnIndex].MappingName);
}
推荐阅读
- constraint-programming - MiniZinc '警告:检测到模型不一致'
- amazon-web-services - 使用哪个 ID 来验证用户请求?ID 令牌或访问令牌 - AWS Cognito
- powershell - 定时转换为共享邮箱规则
- css - 无法动态更改背景颜色
- python - 我可以在 python 格式的功能打印行中使用换行符吗?
- c# - ASP.NET Core MVC Identity - 根据用户所属的“组”限制向用户显示的数据?
- postgresql - 将列时区更改为时间
- google-apps-script - 优化 Google Scripts 功能 - 查找最后一行
- python - 如何在 kivy python 中将按钮锁定 3 秒?
- c# - Blazor 应用程序中的异步调用永远挂起,永远不会出错