2011-01-27 3 views
2

Я быстро объясню на примере того, что я ищу.DataGridView C#

Скажем, у меня есть класс Employee

public class Employee 
{ 
    int empId; 
    string empName; 
    Currency salaryCurrency; 
    string address; 
    decimal salaryAmnt; 
} 
public class Currency 
{ 
    string currencyCode; 
    string currencyName; 
    int numberOfDecimals; 
    .... 
    .... 
} 
public class Employees : Collection<Employee> 
{ 
    public Employees GetEmployees(); 
} 

В моей форме У меня есть DataGridView dgResult, который должен отображать employeeName, salaryAmount и currencyName. (в пределах валютного класса).

У меня есть два вопроса:

1) Проблема я столкнулся, как и в том, как относиться к собственности в классе валюты. Поскольку я хочу имя currencyName.

2) Как заставить DataGridView отображать только эти 3 столбца. То, что я сделал, это присвоить источнику данных Data Grid View коллекцию сотрудников, возвращенных из функции GetEmployees.

dgResult.DatSource = new Employees().GetEmployees(); 

Я работаю над приложением Windows.

ответ

0

Самое простое решение, о котором я могу подумать, пусть ваш докладчик предлагает коллекцию EmployeeData, которая содержит именно ту информацию, которая вам нужна.

1

Я всегда использую это решение, но я хотел бы знать, если есть альтернатива:

class Employee 
{ 

    public Currency Currency 
    { 
    get 
    { 
     return m_Currency; 
     } 
    } 

    public string CurrencyName 
    { 
    get 
     { 
     return this.Currency.Name; 
     } 
    } 
} 

Вы бы затем связать столбец сетки с CurrencyName

я использовал сетки в прошлом, которые могут возьмите дисплейный элемент как «Currency.Name». У меня никогда не было этого, чтобы работать над DataGridView, но если кто-нибудь может сказать, как это сделать, пожалуйста, дайте мне знать!

Чтобы показать только три столбца, которые вы должны установить GridView не автоматически генерировать столбцы, а затем укажите каждый столбец

+0

Чтобы скрыть столбец, вы также можете поместить '[Browsable (false)]' перед свойством, чей столбец вы хотите скрыть. – Blorgbeard

+0

@Blorgbeard - приятно :) – WraithNath

1

Я склонен реализовать класс, как:

public class EmployeeView { 
    private readonly Employee e; 
    public EmployeeView(Employee e) { this.e = e; } 
    public int Id {get {return e.empId; }} 
    public string Name {get {return e.empName; }} 
    public string Currency {get {return e.salaryCurrency.currencyName; }} 
    // ... 
} 

И собрать коллекцию из тех, для использования в DGV. Вы также можете назначить сеттеры, если вы хотите, чтобы DGV был доступен для редактирования.