0

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

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

DataGridView 选择特定行并检索其值

从选定的datagridview行和哪个事件获取数据?

但他们在谈论特定的单元格值

我试图用代码执行

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

但是 currentDataRowView 正在检索 null

我的一位资深人士成功创建了一个通用属性 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];
        }

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

我不想要特定列的数据,我想要整行数据..并且不希望执行任何迭代......是否有任何单一的线性操作?请建议我是否缺少任何链接

4

1 回答 1

0

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

为了获得完整的选定行,您必须有一个选定的单元格。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;
}
于 2013-02-14T15:19:22.873 回答