如果我有以下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直接使用数据库查询结果,这不是我需要的。
谢谢!
答案 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)
首先要记住像GridView
,DropdownList
e.t.c这样的绑定控件绑定到公共属性,因此首先要将公共成员设置为公共属性。
然后创建MyObject类的对象并将它们添加到List<MyObject>
对象
最后,您可以将此列表对象保存在Session
或ViewState
中,以便在回发后维护它。
我希望你现在能做到!如果需要,你可以寻求更多的帮助。