我在用户控件中设置了一个超级简单的gridview设置:
<asp:GridView ID="gvTestUC" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="First Name" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" />
<asp:BoundField DataField="EmailAddress" HeaderText="Email Address" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" />
</Columns>
</asp:GridView>
我正在注册这样的用户控件:
<%@ Register src="Controls/test1.ascx" tagname="test1" tagprefix="test1uc" %>
<test1uc:test1 ID="test1a" runat="server" />
我的问题是,我无法弄清楚如何在使用用户控件的.aspx页面中对其进行数据绑定。
我尝试过:
test1a.gvTestUC
但它无法找到gridview。
我尝试从.aspx页面数据绑定gridview的原因是因为需要此用户控件的所有页面都需要将不同的数据绑定到其中的gridview。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:3)
您只需提供一个可以从您的页面调用的公共方法。
在UserControl
:
Public Sub BindData(gridSource As ComponentModel.IListSource)
BindGridView(dataSource)
End Sub
Private Sub BindGridView(gridSource As ComponentModel.IListSource)
gvTestUC.DataSource = gridSource
gvTestUC.DataBind()
End Sub
当您要对数据绑定时,请在Page
中:
test1a.BindData(GetGridDataSource())
旁注:永远不要让UserControl
来自Page_Load
数据绑定。这可能会导致令人讨厌的副作用,从页面中删除对控制器的控制,并且可以防止在需要时延迟加载控件(例如,使用TabContainer
控件的TabIndexChanging)。