2009-11-17 70 views
1

我有一個自定義對象如下轉換自定義對象要DataRowView的C#的WinForms

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中。 我想將上述對象轉換爲DataRowView。

我該怎麼做?

+0

+1很好的問題 – 2009-11-18 03:38:22

回答

1

您需要創建_AccessionType的列表並將其分配給網格視圖的DataSource屬性。

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

在gridView1的設計器中,需要右鍵單擊>編輯列並添加綁定列。對於每個綁定的列得到合適的HeaderText和在數據字段分配_AccessionType的所需部件屬性(例如DocUrl)

無法檢索從gridView.DataSource對象放回列表< _AccessionType>或者甚至從GridViewRow成_AccessionType。爲了獲取網格視圖行的值,您需要在網格視圖中爲您需要檢索的值定義數據鍵。

例如

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

這就是我正在做的事情:

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

稍後在代碼中,您可以在循環通過DataGrid或相關數據網格的事件處理程序檢索回這些值。但是當我嘗試將其投射到DataRowView時,DataRowView drv =(DataRowView)gridView1.ListObject; 它拋出一個拋出異常 – Sandhurst 2009-11-17 12:33:42

+0

你不能從數據源的GridView到你的對象。相反,您可以在gridview中定義DataKeys並從行中訪問這些值。 – 2009-11-17 12:40:26

+0

我編輯了我的答案,以顯示如何從網格視圖行訪問對象。 – 2009-11-18 03:37:50

相關問題