将自定义对象转换为DataRowView C#WinForms

时间:2009-11-17 12:15:21

标签: c# datagridview object datarowview

我有一个自定义对象如下

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。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

e.g。

<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"]);
}