Xamarin.Forms中Syncfusion DataGrid如何获取用户点击的单元格值
解决方案
直接修改你的SfGrid_CurrentCellActivated事件代码即可实现需求:
private void SfGrid_CurrentCellActivated(object sender, Syncfusion.SfDataGrid.XForms.CurrentCellActivatedEventArgs e) { // 获取当前选中单元格的行、列索引 int rowIndex = e.RowColumnIndex.RowIndex; int columnIndex = e.RowColumnIndex.ColumnIndex; // 排除表头行(行索引0为表头,无需处理) if (rowIndex < 1) return; // 获取当前行绑定的Student实体对象 var rowData = sfGrid.GetRecordAtRowIndex(rowIndex); // 获取当前选中列的绑定字段名 var currentColumn = sfGrid.Columns[columnIndex]; string mappingName = currentColumn.MappingName; // 读取单元格存储值 var cellValue = sfGrid.GetCellValue(rowData, mappingName); // 按需转换类型使用即可,比如获取TB列的数值可写:decimal tbVal = Convert.ToDecimal(cellValue); Console.WriteLine($"选中单元格值:{cellValue},所属列:{mappingName}"); }
补充说明
- 不需要调用
GetSelectedCells方法,该方法适用于多选单元格场景,单单元格选中直接用事件参数携带的行列索引取值即可 - 即使开启了分组、筛选、排序功能,
GetRecordAtRowIndex也可以正确拿到当前视图下的行对应数据源,不需要额外处理行号偏移
内容的提问来源于stack exchange,提问作者dotnetdevcsharp
相关产品推荐
相关产品推荐

