如何将GridView绑定到自定义对象?

时间:2011-04-01 19:02:10

标签: asp.net vb.net data-binding gridview

如果我有以下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列表中的一个项目,以便数据在页面加载或回发中填充和保留?我以前从未做过这样的自定义数据绑定,所以完整的解释会非常有用。到目前为止,我遇到的所有教程都只讨论了使用GridViews直接使用数据库查询结果,这不是我需要的。

谢谢!

3 个答案:

答案 0 :(得分:8)

只需将gridview的数据源设置为您的对象。

MyGridView.DataSource = myList
MyGridView.DataBind()

这是一个非常类似的帖子:

Binding a method that returns List<employee> to a gridview

看起来您正在使用vb.net中的列表。记住列表可以包含整数,字符串,日期,对象(这些包括用户定义的类型(您的对象))。 因此,您可以通过将datasource属性设置为列表来将gridview绑定到列表对象。

在上面的示例中,myList可能包含大量的员工对象等。因此,将其分配给数据源.DataBind(),并在每行包含对象的网格视图中保留。

答案 1 :(得分:1)

您可以执行类似

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

在标记和文本框的类似内容中。

GridView1.DataSource = MyListOfObjects
GridView1.DataBind()

答案 2 :(得分:1)

首先要记住像GridViewDropdownList e.t.c这样的绑定控件绑定到公共属性,因此首先要将公共成员设置为公共属性。

然后创建MyObject类的对象并将它们添加到List<MyObject>对象

最后,您可以将此列表对象保存在SessionViewState中,以便在回发后维护它。

我希望你现在能做到!如果需要,你可以寻求更多的帮助。