private void gridControl1_Click(object sender, EventArgs e)
{
int rowHandle = gridView1.FocusedRowHandle;
object myColumnValue = gridView1.GetRowCellValue(rowHandle, "PName Lastname");
}
我使用 dbml 作为数据源,xtragridview 作为 gridview。 我的问题是我在 gridview 的运行设计器的列选项卡中看不到列。因此,当我想在代码中使用列名时,我正在编写在运行时显示在 gridview 上的列名。但他们似乎不是真的。我不熟悉使用 LINQ。 GetDataRow() GetRow() 等返回空值。如何从 gridview 获取点击/聚焦行的数据?
最佳答案
首先:DevExpress 的Help 真的 super 棒,他们通常会很快回答这类问题。
无论如何,这是它的工作原理:
首先不要使用 Click 函数,因为它会在任何点击组件时触发,
但您只想点击单元格以获取值(RowClick
或 RowCellClick
)。
在下面的示例中,我实际上等待双击 (e.Clicks == 2)
注意“DataEntry”是绑定(bind)到数据源时使用的类型
在我的例子中是这样的gridControlData.DataSource = source
其中 source 的类型为 List<DataEntry>
.
如果您不确定使用的是什么类型,请改用“对象”,然后使用 Debug.Print(obj.GetType());
一旦您拥有对象(在您的情况下可能是 DataRow),您就可以相应地使用该对象。
private void gridViewData_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
if (e.Clicks == 2)
{
DataEntry entry = gridViewData.GetRow(e.RowHandle) as DataEntry;
if (entry != null)
{
Debug.Print(entry.Number);
}
}
}
补充说明:标题(列的名称)由 DevExpress 自动更改,因此例如字段名称为“Number_Children”的列可能会自动显示为“Number Children”。
关于c# - 无法从 xtragridview 获取点击行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550953/