2013-03-21 5 views
3

Я не понимаю, в чем проблема со следующим простым кодом. Все, что он делает, это взять список и отобразить его в datagridview. Это ошибка, я получаю:Невозможно заполнить datagridview с помощью списка Generics

Ошибка 1 Противоречивые доступность: тип возвращаемого значения 'System.Collections.Generic.List' менее доступен, чем метод 'WindowsFormsApplication10.Form1.FillGridView()'

Кроме того, есть ли способ конвертировать ваш список, arraylist и т. Д. В тип набора данных?

public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public List<Student> FillGridView() 
    { 
     List<Student> l = new List<Student>(); 
     l.Add (new Student { Fname="bloke", Lname="lll", Contact=293489485}); 
     l.Add (new Student { Fname = "dog", Lname = "assdf", Contact = 35345 }); 
     l.Add (new Student { Fname = "mary", Lname = "sdff", Contact = 6456 }); 
     l.Add (new Student { Fname = "john", Lname = "sdfsdf", Contact = 45656 }); 
     return l; 


    } 


    private void Form1_Load (object sender, EventArgs e) 
    { 
     dataGridView1.DataSource = this.FillGridView(); 
    } 

    private void button1_Click (object sender, EventArgs e) 
    { 

    } 
} 
+4

Просто примечание: ваш метод называется FillGridView, поэтому я ожидаю, что он заполнит сетку. Но это не так. Возможно, вам захочется найти лучшее имя (CreateStudentList или что-то еще), чтобы соответствовать его поведению. – nvoigt

+4

http://stackoverflow.com/questions/6804603/return-type-is-less-accessible-than-method Является ли ваш класс студента частным или защищенным? – Lojko

+0

Вы можете поделиться своим классом «Студент»? – Arshad

ответ

2

Должен ли ваш метод быть общедоступным? Похоже, ваш класс ученика не является общедоступным, поэтому возврат его к любому публичному абоненту является непоследовательным. Как он выглядит, ваш метод может быть закрытым.

private List<Student> FillGridView() 
+0

большое спасибо! да Студент был закрыт (по умолчанию). К сожалению! – SLearner

0

Ваш модификатор доступа Student класс, вероятно non-public.

Это не имеет значения для метода public типа non-public. Как этот метод может работать сам с внешними сборками?

Вы можете изменить свой модификатор FillGridView доступа к private

private List<Student> FillGridView() 

Читайте больше информации от Access Modifiers

От C# Language Specification

10.3.6 Составные типы

Типы, которые используются в декларации члена, называются составными типами этого элемента. Возможными составными типами являются тип константы, поля, свойства, события или индексатора , тип метода или оператора возврата и типы параметров метода, индексный оператор, оператор или конструктор экземпляра . Составные типы члена должны быть как минимум такими же доступными, как и сам этот элемент (п. 3.5.4).

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