2013-02-13 29 views
0

我有一个用户控件这样一个超级简单的GridView设置内:其绑定到一个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。

任何帮助,将不胜感激。

谢谢!

+1

难道你不能使用test1a.FindControl(“gvTestUC”)找到文章,然后找到DataBind? – 2013-02-13 15:45:23

回答

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。这可能会导致令人讨厌的副作用,从控制器的页面中移除控件,并且会阻止在需要时延迟加载控件(在TabIndexChanging上使用TabContainer控件)。

+0

但是这是获取用户控件中的数据源。我在我的页面中填充数据集,然后我需要使用该数据集来绑定用户控件gridview。谢谢 – SkyeBoniwell 2013-02-13 15:50:02

+1

@ 999cm999:然后提供一个公共属性'DataSource'或者 - 更好 - 将它作为参数传递给方法。我会编辑我的答案。 – 2013-02-13 15:53:08

+0

真棒例子...谢谢 – SkyeBoniwell 2013-02-13 15:59:49

相关问题