DataGridView选择特定行并检索对象数组的所有列值

时间:2013-02-14 14:11:02

标签: c# winforms datagridview

我想执行操作,在按钮单击事件中,Grid Currentrow将整个数据传递给对象数组

我试图通过以下链接进行搜索:

DataGridView selecting a specific row and retrieving its values

Getting data from selected datagridview row and which event?

但他们正在谈论特定的细胞价值

我尝试使用代码执行

DataRowView currentDataRowView = (DataRowView)grdGLSearch.CurrentRow.DataBoundItem;
DataRow row1 = currentDataRowView.Row;

但currentDataRowView正在检索null

My Senior之一成功创建了一个通用属性GetSelectedRow()

它的工作原理如下:

  var object =grdGLSearch.GetSelectedRow<T>();

它有定义

public T GetSelectedRow<T>()
        {
            if (this.CurrentRowIndex == -1)
            {
                return default(T);
            }
            return (base.DataSource as BindingList<T>)[this.CurrentRowIndex];
        }

但它只绑定到一个主网格,我也想将此属性用于另一个网格

我不想要特定列的数据,我想要整行数据..并且不希望任何迭代执行... 这有单线程操作吗? 如果我遗漏任何链接,请建议

1 个答案:

答案 0 :(得分:0)

由于您只显示了两行代码,我真的不确定到底发生了什么。首先,当你点击某个按钮时,我想要整行。但是,您永远不会说明如何选择当前行。

要获取完整选定的行,您必须拥有选定的单元格。 MSDN文档在DataGridView.SelectedRow的页面上说明了这一点。所以我假设用户将单击一个单元格,并且您想要整行。我会创建一个保存所选行的变量。然后,当用户单击单元格时,自动选择行并保存。然后,当单击该按钮时,只需检索已保存的行。

private DataGridViewRow selectedRow { get; set; }

然后有用户点击单元格的事件

private void grdGLSearch_CellClick(object sender, DataGridViewCellEventArgs e)
{
    selectedRow = grdGLSearch.Rows[e.RowIndex];
}

最后,按钮点击事件

private void SubmitBtn_ItemClick(object sender, ItemClickEventArgs e)
{
    // to target the specific data
    var cellVal1 = selectedRow.Cells["SpecificCell1"].Value;
    var cellVal2 = selectedRow.Cells["SpecificCell2"].Value;
}