Преобразовать пользовательский объект в DataRowView C # WinForms - PullRequest
1 голос
/ 17 ноября 2009

У меня есть пользовательский объект следующим образом

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.

Как я могу это сделать ??

1 Ответ

1 голос
/ 17 ноября 2009

Вам необходимо создать список _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"]);
}
...