- PR -

Control.ID プロパティ に設定した値が変わる

1
投稿者投稿内容
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-21 15:52
いつもお世話になります。
掲題の件に関してアドバイスを頂きたいのですが、

サーバサイドで動的にテーブルを作成するプログラムを作っております。以下ソース例
Dim tblRow As TableRow
Dim tblCel As TableCell

tblCel = New TableCell
tblCel.ID = "$"
tblRow.Cells.Add(tblCel)
tblCel = FindControl("$")

としたときにFindControlの戻り値がNothingで返ってきてしまいます。
tblRow.Cells.Add(tblCel)のtblCelのプロパティを見たところ
ClientID : "_"
ID: "$"
UniqueID: "$"
とClientID が"_"に変わっていたので、FindControl("_")としてみましたが結果は同じくNothingでした。
記号という意味で"&"を指定した場合は正常にできました。

正常にtblCel.IDを指定しFindControlで取得する手段はあるのでしょうか?
tblCel.IDに記号を入れてもエラーにならなかったので気にしなかったのですが、記号は使用するべきではないのでしょうか?
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-12-21 16:13
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.control.id(VS.80).aspx
引用:

このプロパティに有効な値は、英数字とアンダースコア文字 (_) の組み合わせだけです。空白または他の無効な文字を含めると、ASP.NET ページ パーサー エラーが発生します。


_________________
囚人のジレンマな日々
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-21 16:42
引用:

囚人さんの書き込み (2007-12-21 16:13) より:
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.control.id(VS.80).aspx
このプロパティに有効な値は、英数字とアンダースコア文字 (_) の組み合わせだけです。空白または他の無効な文字を含めると、ASP.NET ページ パーサー エラーが発生します。




パーサーエラーになってくれれば使用しなければいいで解決なのですが、
FindControlでNothingが返ってくるだけで、ブラウザで表示は行えています。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-12-21 18:14
引用:

パーサーエラーになってくれれば使用しなければいいで解決なのですが、


パーサーエラーが具体的にどうなるかご存知だという事でしょうか?

パーサーエラーになったらどうなるか私はわかりませんので、ブラウザに表示されても ASP.NET の内部ではコントロールの識別ができない可能性もあるかもって思いますが。
_________________
囚人のジレンマな日々
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-21 18:26
引用:

囚人さんの書き込み (2007-12-21 18:14) より:

パーサーエラーになったらどうなるか私はわかりませんので、ブラウザに表示されても ASP.NET の内部ではコントロールの識別ができない可能性もあるかもって思いますが。




引用:

このプロパティに有効な値は、英数字とアンダースコア文字 (_) の組み合わせだけです。空白または他の無効な文字を含めると、ASP.NET ページ パーサー エラーが発生します。



引用:

記号という意味で"&"を指定した場合は正常にできました。



無効な文字を含めるとパーサーエラーになるというなら"&"を指定した場合もコントロールの識別ができずFindControlでNothingが返ると思うのですが?
これはまた別の問題と考えます。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-12-21 20:06
引用:
<asp:Label ID="&" runat="server" />

パーサーエラーになりました。

いまいちどこで困っているのかわかりません。ClientID が"_"に変わるのが問題なのですか?
これは$がコントロールの階層構造を表すために使う記号だからだと思います。
1

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