2009-11-17 2 views
1

У меня есть пользовательский объект следующим образомПреобразование пользовательских объектов Для WinForms C# 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. Я хочу преобразовать вышеуказанный объект в DataRowView.

Как это сделать?

+0

+1 Хороший вопрос –

ответ

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 обратно в Список < _AccessionType> или даже из GridViewRow в _AccessionType. Inorder, чтобы получить значения для строки вида сетки, вам необходимо определить ключи данных в виде сетки для значений, которые вам нужно вернуть.

например.

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

То, что я делаю. Но когда я пытаюсь передать его в DataRowView DataRowView drv = (DataRowView) gridView1.ListObject; его бросание исключения литья – Sandhurst

+0

Вы не можете вернуть DataSource из gridview в свой объект. Вместо этого вы можете определить DataKeys в gridview и получить доступ к этим значениям из строк. –

+0

Я отредактировал свой ответ, чтобы показать, как вы можете получить доступ к объекту из строки сетки. –

Смежные вопросы