Gridview 中的 DataBind 用户控件
我在 ASP.Net 中有一个 GridView,其中放置了一个用户控件:
<asp:GridView ID="GVWunitcollection"
CssClass="gridview"
runat="server"
ShowHeader="false"
ShowFooter="false"
AutoGenerateColumns="False">
<HeaderStyle CssClass="headerstyle" />
<RowStyle CssClass="rowstyle row" />
<FooterStyle CssClass="rowstyle row" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<uc:Unit ID="UNTcol" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我将 GridView 绑定到一个充满自定义“Unit”类的 List
。每个单元都包含多个属性来填充用户控件。 (用户控件包含一个表格、一些标签和文本框)。 我怎样才能实现这个目标?有没有一种简单的方法将每个用户控件绑定到适当的单元?
顺便说一句,这是我模仿页面上多个用户控件的“动态”行为的方法。如果有更简单的方法,我想知道怎么做!
谢谢你!
I got a GridView in ASP.Net in which a user control is placed:
<asp:GridView ID="GVWunitcollection"
CssClass="gridview"
runat="server"
ShowHeader="false"
ShowFooter="false"
AutoGenerateColumns="False">
<HeaderStyle CssClass="headerstyle" />
<RowStyle CssClass="rowstyle row" />
<FooterStyle CssClass="rowstyle row" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<uc:Unit ID="UNTcol" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
I bind the GridView to a List<T>
filled with custom 'Unit' Classes. Each Unit consists of several properties to fill the usercontrol. (The user control holds a table, and some labels and textboxes).
How can I achieve this? Is there a simple way to bind each usercontrol to the appropriate Unit?
By the way, this is my way to mimic a "dynamic" behavior of multiple usercontrols on a page. If there's a more simple way, I would like to know how!
thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该处理 OnRowDataBound 事件,然后使用 FindControl 和事件参数上的 DataItem 属性来提取要绑定到的数据。您应该公开用户控件上的属性以为其赋值。这是一个例子:
您应该转换为特定的数据类型,而不是 int;您应该转换为用户控件类型,而不是 Label。您应该分配从用户控件公开的属性,而不是标签的 Text 属性。
You should handle the OnRowDataBound event then use FindControl and the DataItem property on the event argument to extract the data you are binding to. You should expose properties on the user control to assign values to. Here is an example:
Instead of int you should cast to your specific datatype and instead of Label you should cast to your user control type. Instead of the Label's Text property you should assing to the property you've exposed from your user control.
您可以在用户控件上创建公共属性,并在 gridview 的 OnRowDataBound 事件中为它们分配值。
我有一篇文章概述了如何处理动态用户控件此处
希望有所帮助!
You could create public properties on your usercontrol and assign them values in the gridview's OnRowDataBound event.
I have a post that outlines how I handle dynamic usercontrols here
Hope that helps!