【问题标题】:Convert Custom Object To DataRowView C# WinForms将自定义对象转换为 DataRowView C# WinForms
【发布时间】:2010-12-17 10:26:04
【问题描述】:

我有一个自定义对象如下

public partial class _AccessionType
{
    private string accessionIdField;
    private string docUrlField;
    /// <remarks/>
    public string AccessionId
    {
        get
        {
            return this.accessionIdField;
        }
        set
        {
            this.accessionIdField = value;
        }
    }
    public string DocUrl
    {
        get
        {
            return docUrlField;
        }
        set
        {
            docUrlField = value;
        }
    }
}

上述对象用作DataGridView 的DataSource。 我想把上面的对象转换成DataRowView。

我该怎么做??

【问题讨论】:

    标签: c# datagridview object datarowview


    【解决方案1】:

    您需要创建一个 _AccessionType 列表并将其分配给网格视图的 DataSource 属性。

    List<_AccessionType> accessionTypes= new List<_AccessionType>();    
    // Add objects to the list
    gridView1.DataSource = accessionTypes;   
    gridView1.DataBind();
    

    在 gridView1 的设计器中,您需要右键单击 > 编辑列并添加绑定列。为每个绑定列提供合适的 HeaderText 并在 DataField 中分配所需的 _AccessionType 成员属性(例如 DocUrl)

    您无法从 gridView.DataSource 将对象检索回 List<_accessiontype>,甚至无法从 GridViewRow 检索到 _AccessionType。为了取回网格视图行的值,您需要在网格视图中为需要取回的值定义数据键。

    例如

    <asp:GridView ID="gridView1" runat="server" 
                AutoGenerateColumns="False" DataKeyNames="AccessionId, DocUrl" EnableViewState="true"> 
    ... 
    </asp:GridView>
    

    稍后在代码中,您可以在循环通过 DataGrid 或在相关的数据网格事件处理程序中检索这些值:

    foreach (GridViewRow accessionRow in this.gridView1.Rows)
    {
        int accessionID = Convert.ToInt32(gridView1.DataKeys[accessionRow.RowIndex]["AccessionId"]);
    }
    

    【讨论】:

    • 这就是我正在做的事情。但是当我尝试将它转换为 DataRowView DataRowView drv=(DataRowView)gridView1.ListObject;它抛出一个演员异常
    • 您无法将 DataSource 从 gridview 取回到您的对象中。相反,您可以在 gridview 中定义 DataKeys 并从行中访问这些值。
    • 我已经编辑了我的答案,以展示如何从网格视图行访问对象。
    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多