单击按钮时如何获取当前行的datagridview值?
How to get current row of datagridview values when clicking on button?
我有一个视图模型,其中存储了我的数据以供演示者和 window 使用。但是,我现在需要(在按下按钮时)将网格上当前行的结果获取到我的视图模型中。我最开始使用的是鼠标双击事件,但是需求从那个变成了窗体上的一个按钮:
private void dgvResults_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (this.colOrderNo.Index != e.ColumnIndex || e.RowIndex < 0) return;
var auditOrder = (PurchaseOrdersTrackingViewModel) this.dgvResults.Rows[e.RowIndex].DataBoundItem;
this.AuditOrderKey = $"{auditOrder.OrderNo}|{auditOrder.ItemNo}|{auditOrder.WarehouseId}|{auditOrder.ItemSequence}";
}
那是我的旧代码。现在我需要它:
private void btnAuditLog_Click(object sender, EventArgs e)
不确定如何在没有 DataGridViewCellMouseEventArges
事件的情况下引用 RowIndex
。我尝试了 CurrentRow
属性,但它不起作用。
只是另一个问题,如果有人也可以协助解决这个问题,我如何将值从一种形式获取到另一种形式,特别是属性值。它不在网格上,在控件中。基本上就是 public string order
而已。我在一个表单上设置值,然后需要它在另一个表单上进行查询过滤。如果您还需要什么,请告诉我。
您想使用 DataGridView 的 SelectedRows 属性。它告诉选择了哪一行。在这种情况下,您似乎想要第一个选定的行(因为您有一个名为 this.AuditOrderKey 的 属性)。
在此上下文中,列顺序不再重要。
if (dgvResults.SelectedRows.Count == 0) return;
var auditOrder = (PurchaseOrdersTrackingViewModel) dgvResults.SelectedRows[0].DataBoundItem;
this.AuditOrderKey = $"{auditOrder.OrderNo}|{auditOrder.ItemNo}|{auditOrder.WarehouseId}|{auditOrder.ItemSequence}";
如果您没有选择行,CurrentRow 是一个选项:
if (dgvResults.CurrentRow == null) return;
var auditOrder = (PurchaseOrdersTrackingViewModel) dgvResults.CurrentRow.DataBoundItem;
this.AuditOrderKey = $"{auditOrder.OrderNo}|{auditOrder.ItemNo}|{auditOrder.WarehouseId}|{auditOrder.ItemSequence}";
使用 DataGridView 的 SelectedRows 属性。假设您将 DataGridView 设置为 MultiSelect = false;和 SelectionMode = FullRowSelect;
if (dgvResults.SelectedRows.Count > 0)
{
dgvResults.SelectedRows[0].Cells["yourColumnName"].Value.ToString();
}
在您的按钮单击事件中,它看起来像这样。 (假设你的按钮名称是 btnEdit)
private void btnEdit_Click(object sender, EventArgs e)
{
if (dgvResults.SelectedRows.Count > 0)
{
string selectedValue = dgvResults.SelectedRows[0].Cells["yourColumnName"].Value.ToString();
}
}
我有一个视图模型,其中存储了我的数据以供演示者和 window 使用。但是,我现在需要(在按下按钮时)将网格上当前行的结果获取到我的视图模型中。我最开始使用的是鼠标双击事件,但是需求从那个变成了窗体上的一个按钮:
private void dgvResults_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (this.colOrderNo.Index != e.ColumnIndex || e.RowIndex < 0) return;
var auditOrder = (PurchaseOrdersTrackingViewModel) this.dgvResults.Rows[e.RowIndex].DataBoundItem;
this.AuditOrderKey = $"{auditOrder.OrderNo}|{auditOrder.ItemNo}|{auditOrder.WarehouseId}|{auditOrder.ItemSequence}";
}
那是我的旧代码。现在我需要它:
private void btnAuditLog_Click(object sender, EventArgs e)
不确定如何在没有 DataGridViewCellMouseEventArges
事件的情况下引用 RowIndex
。我尝试了 CurrentRow
属性,但它不起作用。
只是另一个问题,如果有人也可以协助解决这个问题,我如何将值从一种形式获取到另一种形式,特别是属性值。它不在网格上,在控件中。基本上就是 public string order
而已。我在一个表单上设置值,然后需要它在另一个表单上进行查询过滤。如果您还需要什么,请告诉我。
您想使用 DataGridView 的 SelectedRows 属性。它告诉选择了哪一行。在这种情况下,您似乎想要第一个选定的行(因为您有一个名为 this.AuditOrderKey 的 属性)。
在此上下文中,列顺序不再重要。
if (dgvResults.SelectedRows.Count == 0) return;
var auditOrder = (PurchaseOrdersTrackingViewModel) dgvResults.SelectedRows[0].DataBoundItem;
this.AuditOrderKey = $"{auditOrder.OrderNo}|{auditOrder.ItemNo}|{auditOrder.WarehouseId}|{auditOrder.ItemSequence}";
如果您没有选择行,CurrentRow 是一个选项:
if (dgvResults.CurrentRow == null) return;
var auditOrder = (PurchaseOrdersTrackingViewModel) dgvResults.CurrentRow.DataBoundItem;
this.AuditOrderKey = $"{auditOrder.OrderNo}|{auditOrder.ItemNo}|{auditOrder.WarehouseId}|{auditOrder.ItemSequence}";
使用 DataGridView 的 SelectedRows 属性。假设您将 DataGridView 设置为 MultiSelect = false;和 SelectionMode = FullRowSelect;
if (dgvResults.SelectedRows.Count > 0)
{
dgvResults.SelectedRows[0].Cells["yourColumnName"].Value.ToString();
}
在您的按钮单击事件中,它看起来像这样。 (假设你的按钮名称是 btnEdit)
private void btnEdit_Click(object sender, EventArgs e)
{
if (dgvResults.SelectedRows.Count > 0)
{
string selectedValue = dgvResults.SelectedRows[0].Cells["yourColumnName"].Value.ToString();
}
}