- PR -

DataList内のコントロールにアクセスする方法

1
投稿者投稿内容
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-05-06 19:26
たびたびお世話になっております。

現在私は、データバインド時にテキストをエスケープさせたいと思い、先日皆様からご教授いただいた方法(HTMLEncode)を下記のようにしたところ、GridViewとDetailsViewに関しては下記のような方法で問題なく実装できたのですが、DataListに関しては、各行にアクセスできていないのか、どうしてもうまくいかないため、皆様のお力を貸していただければと思い、投稿させていただきました。

For Each r As TableRow In DetailsView.Rows
For Each tc As TableCell In r.Cells
For Each c As Control In tc.Controls
If TypeOf c Is Label Then
CType(c, Label).Text = Server.HtmlEncode(CType(c, Label).Text).Replace _(Environment.NewLine, "<br />")
End If
Next
Next
Next

何か良い方法や、ご指摘などいただければ幸いです。
よろしくお願いいたします。
_________________
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-05-07 01:36
DataListの場合はItemsじゃないですか?
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-05-07 01:48
べる様、返信ありがとうございます。
以前

For Each i As Control In DataList.Items
For Each c As Control In i.Controls
If TypeOf tc Is Label Then
CType(c, Label).Text = Server.HtmlEncode(CType(c, Label).Text)
End If
Next
Next

として試してみたのですがうまくエンコードされておらず、別の方法を探していたのですが、どこか修正すべき点はありますでしょうか?

_________________
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2007-05-07 09:21
Labelでいいのでしょうか?
まずは、DataList内のコントロールツリーがどういう構成かを調べましょう。

http://www.atmarkit.co.jp/fdotnet/dotnettips/089tmplcell/tmplcell.html
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-05-07 12:01
返信ありがとうございます。

わかりました。もう少し調べてみることにします。

ありがとうございました。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)