Как связать GridView с пользовательским объектом? - PullRequest
9 голосов
/ 01 апреля 2011

Если у меня есть следующий код ASP.NET (он не полный - очевидно, что многое пропущено, но ничего из этого не имеет значения):

    <asp:GridView>
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    My Label: <asp:Label />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    My Text Box: <asp:TextBox />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

И если у меня есть что-то подобное в CodeBehind:

Private MyListOfObjects As List(Of MyObject)

...

Public Class MyObject

    Public MyTextBoxString as String
    Public MyLabelString as String

End Class

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

Спасибо!

Ответы [ 3 ]

8 голосов
/ 01 апреля 2011

Просто установите источник данных вида сетки для вашего объекта.

MyGridView.DataSource = myList
MyGridView.DataBind()

Вот очень похожий пост:

Привязка метода, который возвращает List к сетке

Похоже, вы используете список в vb.net. Помните, списки могут содержать целые числа, строки, даты, объекты (в том числе определенные пользователем типы (ваш объект)). Таким образом, вы можете привязать сетку к объекту списка, установив свойство источника данных в свой список.

В приведенном выше примере myList может содержать тонну объектов сотрудника и т. Д. Так что присвойте его источнику данных и .DataBind() и вуаля gridView с каждой строкой, содержащей ваш объект.

1 голос
/ 01 апреля 2011

Сначала запомните, что любые обязательные элементы управления, такие как GridView, DropdownList и т. Д., Привязываются к публичным свойствам, поэтому сначала сделайте ваши открытые члены общедоступными свойствами.

Затем создайте объекты класса MyObject и добавьте их в свой List<MyObject> object

Наконец, вы можете сохранить этот объект списка, сохранив его в Session или ViewState, чтобы сохранить его после обратных передач.

Я надеюсь, что вы можете сделать это сейчас !!!Вы можете обратиться за дополнительной помощью, если это необходимо.

1 голос
/ 01 апреля 2011

Вы можете сделать что-то вроде

 My Label: <asp:Label id="myLabel" runat="server" Text='<%# Eval("MyTextBoxString") %>'  />

в разметке и аналогичные вещи для вашего текстового поля.

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