2013-02-13 7 views
0

У меня есть супер простой GridView установки в пользовательский элемент управления, как это:DataBind 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.

Причина, по которой я пытаюсь привязать gridview к странице .aspx, состоит в том, что для всех страниц, которым нужен этот пользовательский элемент управления, необходимо будет привязать разные данные к gridview, находящемуся внутри него.

Любая помощь будет оценена по достоинству.

Спасибо!

+1

Не можете ли вы использовать test1a.FindControl («gvTestUC»), чтобы найти статью, а затем DataBind? –

ответ

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()) 

Side-примечание: никогда не позволяйте UserControl DataBind себя от Page_Load. Это может вызвать неприятные побочные эффекты, удаляет контроль со страницы, которая предназначена для контроллера, и будет препятствовать ленивой загрузке вашего управления, когда вы захотите (например, на TabIndexChanging с помощью элемента управления TabContainer).

+0

Но это получает источник данных в User Control. Я заполняю набор данных на своей странице, а затем мне нужно использовать этот набор данных для привязки gridview User Control. Спасибо – SkyeBoniwell

+1

@ 999cm999: Затем предоставить публичное свойство 'DataSource' или - лучше - передать его в качестве аргумента для метода. Я отредактирую свой ответ. –

+0

удивительный пример ... спасибо – SkyeBoniwell

Смежные вопросы