【问题标题】:FastMember convert datagridview CurrentRow back to ObjecttFastMember 将 datagridview CurrentRow 转换回 Object
【发布时间】:2020-11-05 23:16:09
【问题描述】:

我使用此代码将IEnumerable<Register> 转换为Datatable,以便在一个datagridview 中使用扩展功能。

DataTable table = new DataTable();
using (var reader = ObjectReader.Create(data))
{
   table.Load(reader);
}

现在我需要取回对象,例如单击行时。

private void dgRegisters_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
   if (e.RowIndex < 0 || e.ColumnIndex < 0) return;
   var register = ((DataGridView)sender).Rows[e.RowIndex].DataBoundItem as Register;
}

我不知道如何找回它var register。它总是null,因为它是DataRowView

【问题讨论】:

    标签: c# winforms data-binding datarow fastmember


    【解决方案1】:

    实际对象从未被存储; ObjectReader 将类型公开为数据读取器,允许 DataTable 等消费者从中读取,但这并不意味着您可以轻松地重新获取原始对象。然而!您可以尝试使用 Dapper,它具有使用数据读取器和构造对象的能力;你可以创建一个阅读器通过DataTableReader传递给Dapper。

    【讨论】:

    • 谢谢。如果我至少可以得到 '((DataRowView)senderGrid.Rows[e.RowIndex].DataBoundItem).ObjectID' 那么我可以使用 id 从初始列表中获取相同的对象。
    • @miguelmpn 如果那是一列,那么确定:您可以通过 DataRowView API 访问它 - 大概是 theRow["ObjectID"]
    • 但是ObjectID无法访问,我再试试其他策略,谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多