ASP.NET GridView проблема управления пользователем - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть пользовательский элемент управления, который содержит GridView. Я передаю объект источника данных IEnumerable экземпляру пользовательского элемента управления. Как я могу использовать ForEach для циклического прохождения источника данных в коде пользовательского элемента управления для отображения нужных столбцов из источника данных?

Пока у меня есть следующий код в коде пользовательского элемента управления:

public IEnumerable<object> DataSource { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    this.GridView1.DataSource = DataSource;

    foreach (var item in DataSource)
    {
//The line below gives an error - what's the correct way to do this?
        this.GridView1.Columns.Add(new BoundColumn() {DataField = "What to put here", HeaderText = "What to put here"; }

    }

    this.GridView1.DataBind();
}

1 Ответ

2 голосов
/ 19 сентября 2011

Вы не должны зацикливаться на всех элементах источника данных, вы зацикливаетесь вертикально на всех записях, в то время как вы хотите зациклить только один раз, горизонтально, на всех столбцах. Поскольку вы знаете список свойств объекта, содержащийся в источнике данных, вы можете делать это статически, и даже не в foreach. Если вы действительно хотите, чтобы он был динамическим, то вы можете использовать Reflection и цикл во всех открытых полях первого объекта, доступного в вашем IEnumerable.

Редактировать: чтобы найти все открытые поля объекта с помощью отражения, см. Здесь:

Как найти все открытые поля объекта в C #?

но это применимо только в том случае, если вы хотите сделать его универсальным, если вы уже знаете, что ваш объект содержит некоторые поля, например, Имя, Адрес и Электронная почта, например, вам это не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...