0

次のようなユーザーコントロールで非常に単純なグリッドビューをセットアップしています。

    <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

しかし、グリッドビューが見つかりません。

.aspx ページから gridview をデータバインドしようとしている理由は、このユーザー コントロールを必要とするすべてのページが、その内部にある gridview にさまざまなデータをバインドする必要があるためです。

どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

3

ページから呼び出すことができる public メソッドを提供するだけです。

あなたの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 の fe TabContainer)。

于 2013-02-13T15:45:20.693 に答える