0

私の質問を読んでくれてありがとう。私は2日間どこでも検索しましたが、私と同じような問題を抱えている人はまだ見つかりません. マスター ページを持つ asp.net プロジェクトがあります。マスター ページには、コンテンツ プレースホルダー コントロールがあります。マスター ページから派生した子ページがあります。子ページに、ストアド プロシージャによって埋められる Sqldatasource にバインドされたデータリスト コントロールを追加しました。データリスト コントロールには、ラベル アイテム テンプレートがあります。

コードビハインドからこれを使用してラベルにアクセスしようとしています:

 Protected Sub DataList1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim myLabel As Label = CType(DataList1.FindControl("UnitPriceLabel"), Label)
        myLabel.Text = "new text"

    End If
End Sub

「myLabel」には何も含まれていないため、オブジェクト参照がオブジェクトのインスタンスに設定されていないというエラーが表示されます。

ここからコードを試しました:

コードビハインドからデータリストヘッダーテンプレートのコントロールにアクセスする

コードビハインドでデータリストのasp.netコントロールにアクセスする

コード ビハインドから C# で Datalist HeaderTemplate を定義する

データリストからアイテムにアクセスする方法

マスターページコントロールの contentplaceholder と関係があると思いますが、わかりません。

4

1 に答える 1

0

この行を変更します。

Dim myLabel As Label = CType(DataList1.FindControl("UnitPriceLabel"), Label)

これに:

Dim myLabel As Label = CType(e.Item.FindControl("UnitPriceLabel"), Label)

必要に応じて、これを 1 行で実行することもできます。

DirectCast(e.Item.FindControl("UnitPriceLabel"), Label).Text = "new text"

ただし、個人的には、ラベルに複数回ではなく一度アクセスする必要がある場合にのみ、これを行います。

詳細については、Microsoft のこの記事を確認してください。

于 2013-03-22T12:59:29.263 に答える