[過去ログ] 【質問】ASP.NETスレ Part5【議論】 (970レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
183(4): 2009/05/04(月)20:29 ID:??? AAS
問題はデザイン時に指定しているIDと
実際に動作しているときに出力されるIDが違う、ってことなんだよな
CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある
で、解決方法とすれば、実行時にスクリプト書きかえるか
なるべくID指定しなくて済むようにスクリプト組むぐらいしかないのかと
ClientIDを決定するロジックを自分で決められればいいと思うんだが
そんなことできないかな?
184: 176 2009/05/04(月)21:07 ID:??? AAS
>>180-182
ありがとうございます。ASPで云々ではなくJavaScript側で対応ですか。
参考になります
>>183
CSSもIDとclassで書式が違うので問題になったりしますね。
「なんでIDで指定できないの?」みたいな
ExpressionWebってこの辺を解決してくれたりするんですかね?
185(1): 2009/05/04(月)21:32 ID:??? AAS
>>183
おそらく無理
>子コントロールをページにレンダリングするコントロールもあります。
>このような親コントロールは名前付けコンテナであり、INamingContainer を実装します。
>名前付けコンテナを含むページをブラウザに表示すると、
>名前付けコンテナの子コントロールの name 属性と id 属性に一意の ID が指定されていることをページ ソースで確認できます。
>ただし、ブラウザで表示される ID を直接参照することはお勧めしません。
>子コントロールに対して一意の ID を生成する式は変更されることがあります。
>代わりに、子コントロールの ClientID プロパティの値を取得し、
>この値を使用して子コントロールを参照します。
省4
186(2): 2009/05/04(月)23:41 ID:??? AAS
>>183
>CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある
それで、JQueryが出てきたんでは?
どこまで、使えるのか、まだ試してないが。
187: 2009/05/04(月)23:49 ID:??? AAS
>>186
そうだjquery勉強しようと思ってたんだった
どんどん新しいテクノロジが出てきておいつかないよね
asp.net勉強して、C#でジェネリクスとかでてきて勉強して、
そう思ったらajaxでてきて、SQL/CLRもやんなきゃってなって、
LinqToEntityキタ━━━━(゚∀゚)━━━━!!、ラムダ式がきたっちゃになって、
今度はリッチクライアントでsilverlightですか?(´Д⊂グスン いまここ
188: 2009/05/04(月)23:53 ID:??? AAS
jQueryで作るAjaxアプリケーション
は良い本だった。
189: 2009/05/05(火)00:01 ID:??? AAS
サーバサイドの実装がめんどくさそう
asp.net ajaxはポトペタだしすごい便利なんだよな
190(1): 2009/05/05(火)00:47 ID:??? AAS
>>186
JQuery詳しく知らないが、普通の一般的なスクリプトのライブラリじゃないの?
JQuery使うとIDに依存しない実装できるってんなら話は別だが
今問題にしてるのは、クライアントに出力されるIDをどうするか、って話で
サーバ側の制御の問題なんだが
191(1): 2009/05/05(火)12:09 ID:??? AAS
>>190
いま見てみたんだが、だいぶいろんなことが可能そう
MSDNによれば、
>他のコントロール内でレンダリングされたコントロールの参照
>子コントロールをページにレンダリングするコントロールには、
>GridView、DetailsView、FormView、DataList、Repeater の
>各コントロールなどのデータ リスト コントロール、ユーザー コントロール、
>および Web パーツ コントロールが含まれます。
これらは行が動的に生成されるので、
操作した行にあるコントロールを操作するとか、
省7
192(5): 2009/05/05(火)14:03 ID:??? AAS
久しぶりにいじると楽しいjavascript
jQueryでscriptを記述
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
function culc() {
var sum = 0;
for (var i = 0; i < $(".calcSelect").size(); i++) {
sum += parseInt($(".calcSelect").get(i).value);
}
alert(sum);
省6
193(5): 2009/05/05(火)14:04 ID:??? AAS
AA省
194(6): 2009/05/05(火)14:08 ID:??? AAS
行のobjectを取得する方法はいろいろあると思うけど、
今回はContainer.CliendIDで行ごとに一意の名前を付けて、
そこから目的とするobjectを取得してみた
列の集計は集計するobjectに同じclass名を設定すれば
配列で取得できるのでそこから合計値を求めることができる
クライアント側だけで何かをしようと思うのなら割と便利かもしれない
195(1): 2009/05/05(火)14:38 ID:??? AAS
>>191
同じクラスの要素や、同じタグの要素をID使わないでどうやって識別するんだ?
繰り返し系のコントロールはまあ仕方ないにしても
マスターページやUpdatePanelでもID変わるのがなぁ
196: 2009/05/05(火)14:43 ID:??? AAS
>>195
>>192-194で試してるように、極端な話、一意の名前を持ったclassのdivで囲めば直接アクセスできる
197(2): 2009/05/05(火)14:59 ID:??? AAS
>>194
細かい突っ込みだがな、
>今回はContainer.CliendIDで行ごとに一意の名前を付けて、
正確には、システムが自動的に生成した一意の名前を指定して、だな
システムが生成したIDを実行時バインドでスクリプト中に埋め込んでるんで、
これは実行時にスクリプト書き換えてる
で、このID生成ロジックだが、>>185が書いてある通り
>子コントロールに対して一意の ID を生成する式は変更されることがあります。
だから、それなら自分で実装できないかと思ったんだよ
これができれば、マスターページ使うページはIDは
省3
198(1): 2009/05/05(火)15:16 ID:??? AAS
>>197
いや、だから>>192-194を読んでる?
今回は一意の名前としてContainer.CliendIDを利用しただけで、
それを自分の用意したものに変更すればいいだけでしょ?
そうすりゃ自分で生成したIDで実装しているのと同じじゃない。
例えば
private int _count = 0;
public string GetID(bool canAdd)
return canAdd ? "ctrl" + (this._count++).ToString() : "ctrl" + this._count.ToString();
を実装して、Container.ClientIDの代わりに実行時バインドしてあげればいい。
199(2): 2009/05/05(火)16:03 ID:??? AAS
>>198
実行時バインドで動的に書き換えるならどうとでもなるだろ
そもそもの問題はな、ASP.NETのコントロール使うと
自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
これはデータバインドするような繰り返し系のコントロールに限らないんだ
で、このルールが制御できない
ルール決め打ちでも実用上問題ないかもしれないが、自分でルール決めれたら
実行時バインドに頼らなくても(クライアントスクリプトだけで)ID生成できるだろ
サーバコントロールじゃないhtml要素に実行時にID振るなら、自分で制御できるかもしれんな
webコントロールじゃなくてhtmlコントロールだと動作変わるのか?
省2
200(1): 2009/05/05(火)16:57 ID:??? AAS
そもそもrunat="server"つけると、解析エラーになった
サーバコントロールのIDにバインド式は書けない模様
201(1): 2009/05/05(火)22:49 ID:??? AAS
>>165
念のため言っとくが、アプリケーションプールのリサイクルとは別に
アプリケーション自体の再起動(アプリケーションドメインの再起動)もあるぞ。
まあありがちなのは、binフォルダにログ書くとかあほなことやってるパターンだな。
202(1): 2009/05/06(水)03:19 ID:??? AAS
>>199
>実行時バインドで動的に書き換えるならどうとでもなるだろ
IDは書き換えられないでしょ
>マスターページやUpdatePanelでもID変わるのがなぁ
こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
コントロール配置してもIDは変化しないよ(Repeater等は除く)?
>自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
まったくソースをみてくれてないんだなぁ。
誰もIDの話なんかしていないんだけど。
>そもそもrunat="server"つけると、解析エラーになったサーバコントロールのIDにバインド式は書けない模様
省3
上下前次1-新書関写板覧索設栞歴
あと 768 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.010s