【質問】ASP.NETスレ ..
[2ch|▼Menu]
85:nobodyさん
09/09/16 01:27:00
>>84
そのFillなんちゃらの引数によって、クエリを作ったりできたっけ?
自分はできないと思っていたので、できるのなら教えてほしい。
環境はVS2005+SQLServer2005

86:nobodyさん
09/09/16 01:32:33
途中で送信してしもた
環境はVS2005+SQLServer2005で、TableAdapterのFillなんちゃらのメソッドで、
引数に従ってWHEREを作成するなんて無理だと思ってた。
Fillなんちゃらがストアドを呼び出してて、
ストアド側で引数によってクエリのWHEREを組み立ててるならわかるけど、
それはクエリを書いてるから手書きクエリの削減じゃないしなぁ。


87:nobodyさん
09/09/16 06:02:19
>>84
>Fill 系のメソッドで引数チェックして WHERE を組み立てるなんざどこでも
>やってることでしょ。
Fillなんちゃらって、TabelAdapterのか?
SQL指定したらメソッドの中身はウィザードで勝手に作られてるぞ
すくなくとも自分でコードは書いてないから、動的にSQL作ったりはしてない
これをいじるぐらいなら俺ならTableAdapterなんて使わん

>>86
実現させる方法をいろいろ考えたが
部分クラスか継承させたクラスでFillなんちゃらを全部自前で実装すればできそう
SelectList メソッド ってのもよくわからんし、自動生成されてるのは
TableAdapterだけじゃないのかもしれんが、そのへんは>84じゃないのでわからんw

たとえストアドで操作してても、そのストアドが自動生成されているなら
「手書き」クエリは減ってるとは言える

まあ、なんかしらの開発用フレームワークあるんじゃないかって感じだな


88:23
09/09/16 07:26:21
>>86,87
TableAdapter は Excel の仕様書からマクロで自動生成してるんだって。Fill とか
SelectList とか名前はどうでも良くて、要するに ObjectDataSource の Select
メソッドに選択できるメソッドの中で、引数をチェックして WHERE を組み立てる
ロジック込みで、コードを自動生成している。TableAdapter をウィザードで作って
いるわけではない。これを「手書き」と思うなら、まあどうぞ御自由に。

89:155
09/09/16 16:20:34
>>88
すまん、どの引数なのか、ウィザードとは何のことかさっぱりわからん。
よければ質問に答えてくれないか?

>ObjectDataSource の Selectメソッドに選択できるメソッドの中で、
>引数をチェックして WHERE を組み立てるロジック込みで、コードを自動生成している。

Q1 どの引数をチェックしてWHERE文を作成してるの?
1.ObjectDataSourceのSelectメソッドの引数
2.TableAdapterのFillなんちゃらメソッドの引数
3.その他のメソッドの引数(どのメソッド?)

Q2 WHERE文を組み立ててるのはどこ?
1.ObjectDataSourceのSelectメソッド
2.TableAdapterのFillなんちゃらメソッド
3.Excelのマクロ
4.その他(どこ?)

Q3 自動生成するクエリの範囲は?
1.すべてをExcelのマクロで作成
2.WHERE文以外をExcelのマクロで作成、WHERE文のみQ2のメソッドで、Q1の引数から作成
3.すべてをQ2のメソッドで、Q1の引数から作成
4.その他(どこ?)


90:nobodyさん
09/09/16 16:21:32
失礼、名前は無関係
続き

>TableAdapter をウィザードで作っているわけではない。
Q4 TableAdapterそのものはどうやって作ってるの?
1.データセットデザイナ
2.その他(なに?)

Q5 作成したWHERE文から前のクエリとWHERE文はどこに登録してるの?
1.すべてのクエリをTableAdapterに登録
2.WHERE文から前をTableAdapterに登録、WHERE文はDataTable.Selectメソッドで登録
3.その他(どこ?)

Q6 クエリをどこに登録してるの?
1.拡張子.xsdのxmlファイルのに手書きで作成したクエリを追加
2.データセットデザイナのクエリ構成ウィザードを使って作成したクエリを登録
3.データセットデザイナのクエリ構成ウィザードからクエリビルダを使って作成したクエリを登録
4.その他(なに?)

91:nobodyさん
09/09/16 16:35:02
データアクセス層のクラスを自動生成するって話はわかるんだが
その自動生成されてるものはTableAdapterといえるのだろうか
そもそもTableAdapterって何だって話になるんだが、MSDNによると
>TableAdapter は、DataAdapter の機能を向上させるためにデザイナで生成されるコンポーネントです
らしい。
当然TableAdapterと100%互換のあるクラスも作成可能なんだろうが
それを生成したからといってTableAdapterを自動生成っていうと誤解を招くとおもうな
ObjectDataSourceでの使用が前提なら、あえてTableAdapterと互換のあるものにする必要もないし

SQL手書き量が減ってる最大の要因はこのデータアクセス層クラスの自動生成のおかげで
けっして最新のASP.NETのおかげではないってのも誤解を招いた原因の一つだな

92:nobodyさん
09/09/16 18:30:04
いや、既存のTableAdapterに、自前のクエリを何かしらの方法で登録してるんでしょ?
じゃないと話がつながらないし、
もしExcelのマクロとやらでクエリを書いてるから自動だってのなら、
これはツール(Excel)のおかげでASP.NETのおかげじゃないから
2割以下なんて結論に至るはずがない。

>45 名前: 23 [sage] 投稿日: 2009/09/09(水) 08:04:03 ID:???
>俺のところだと SQL 手書きが発生するのは全体の 2 割以下だな。それもこれも最新の
>ASP.NET が使えるおかげ。

DataSetデザイナでは、WHERE文を動的に発行することは不可能だから、
みんなどうやってるのかを聞きたいんだと思うのだが。

※DataSetで動的にWHERE文を作るのは不可能というと誤解を招くと思うが、
考えられる場合の数だけ引数の異なるFill〜メソッドを作れば可能だが、
これは半固定なのでこれは動的発行じゃないし、
ストアドプロシージャでも可能だけど、これも事実上、クエリは手書きとかわらんし、
DataTableのSelect使えばソートやフィルタリングはできるが、これもクエリの動的発行じゃない

93:23
09/09/16 21:41:11
>>89
Q1=2, Q2=2, Q3=1
>>90
Q4=Excel マクロ, Q5=TableAdapter の定数, Q6=Q5 と同じ

要するに、TableAdapter.cs 全体を Excel マクロで吐き出している。全部。WHERE
の動的生成もその中にある。種も仕掛けもあるよ。

>>91, 92
あーなるほど、>>45 の発言が混乱させてたのか。たしかに ASP.NET のおかげじゃ
ないね。手書き 2 割以下は ASP.NET のおかげではなく、Excel マクロのおかげ。
元レスは ASP.NET 1.1 の環境だったから、単純に FormView が 使える3.5(2.0 も)は
いいぜ、という程度のノリだった。すまんかった。

94:nobodyさん
09/09/16 22:11:35
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄

でDataSourceと関係なく、FormViewのメリットってなに?
本来、ポトペタするコントロールに、フィールド名を登録するだけでバインドしてくれるところ?

95:nobodyさん
09/09/16 22:50:54
なんと比べてのメリットって話もあるが、1.1と比べるなら
FormView(DetailsViewも)のメリットは、データソースの単一レコードにバインドでき
レコードのナビゲーションを操作する機能まで取り込まれているところがメリットかと
1.1で単一レコード表示させたら、レコード移動と画面の更新を全部自分でやらんとダメだからな

双方向バインドで自動更新なんておまけみたいなもんですよw


96:23
09/09/16 23:02:19
>>94
それもあるが、レイアウトを自由にカスママイズできるってのと、あとは登録処理が
FormView.InsertItem(false) で OK なところとか、Update の時に元々の入力値も
引数で一緒にもらえるところとかね。使ったことないなら使ってみたら?

>>95
ナビゲーションは逆に使ってないな。GridView との連動パターンしかない。
それと、双方向バインドで自動更新は不可欠だろ! これのおかげでどんだけ楽に
なってるか。

97:nobodyさん
09/09/16 23:33:22
本当に日本語が不自由な奴だな

>レイアウトを自由にカスママイズできるってのと
レイアウトの自由度はポトペタ>>>>>>>>>>>>>>>>>>>>>>>>(越えられない壁)>FormViewだろ?
なんでレイアウトの自由度がポトペタに対してFormViewのほうがメリットあるんだ?
>あとは登録処理がFormView.InsertItem(false) で OK なところとか、
そんなのFormViewじゃなくても作り方次第
>Update の時に元々の入力値も引数で一緒にもらえるところとかね。
そんなのFormViewじゃなくても作り方次第

>それと、双方向バインドで自動更新は不可欠だろ! これのおかげでどんだけ楽になってるか。
多くの人はなってないんだよ。
おまえだけがエクセルでやってるから楽なの。

FormViewの利点を述べたいがために強弁してないか?
ASP.NETでクエリを書くのが2割になったとか、
レイアウトを自由にカスタマイズできるとか、
作り方次第でどうとでもなることをFormViewのメリットだと述べたりとか、
自分がやっている方法に固執してFormViewは便利だと述べたりとか。

98:23
09/09/17 00:05:04
>>97
作り方次第のところはそう言うならまあ頑張ってくれやって感じだが、双方向バインド
は Excel とは何の関係もないよ。

99:95
09/09/17 01:07:19
>>96
>レイアウトを自由にカスママイズできる
レイアウトのカスタマイズなんてFormView以外でもカスタマイズできる
これはFormViewのメリットでも何でもない

>ナビゲーションは逆に使ってないな。GridView との連動パターンしかない。
ナビゲーションの真意が伝わってない気がするな。FormViewでレコードを移動するって話じゃないぞ
レコードが移動されたときに新しいレコードにバインドし直すって話だ
いちど、FormViewつかわないで一覧からカレント行取得して詳細表示するコード書いてみ
このコードを自動でやってくれるのはかなり楽
データ更新は、SQL書くのなんてパターン決まってるから難しくはない
(それこそ自動生成で8割まかなえるほどに)
ただ、ビジネスロジックのチェックはそうはいかんし
単純な更新でないと使えないってのが感想だ

>>97
作り方でどうにでもなるのはその通りなんだが、問題はその作りこみが
FormViewで不要や楽に実現できるようになるかどうかだろ

レイアウトの件はまあ同意だが、FormViewにもポトペタすればある程度自由にできるぞ
登録処理は、単純な更新に限れば楽なる
UPDATEの元値は、DataSet使わないならかなり有効な機能だと思う

1.1には単一レコードを想定したバインドコントロールはないんで、
その点でFromViewにはメリットはあるから、使えるとこなら使えばいいかと
逆にデメリットは、自由度が下がるってことか
それでもある程度コードかけばカバーできる範囲だと思う


100:nobodyさん
09/09/17 05:26:24
>>99
上のほうにナイスなたとえがあるけど、まさにその通りだと思ったな
FormViewは麺つゆ
ウドンやソバを作るのには便利だし美味しい
だけどいくら加工してもベースが麺つゆだから味が似てしまう(応用度が低い)し
麺つゆだから酢醤油や砂糖醤油にはならない。
ポトペタの醤油は手間はかかるがより多くの料理に利用できる。
こんなとこだろ

101:nobodyさん
09/09/17 10:42:52
ウェップフォーム上の全チェックボックスのチェックをオフにしたいんですが、方法は
ありますでしょうか?repeaterの中にあってIDが固定じゃないのでべた書きすることが
出来ません。

102: [―{}@{}@{}-] nobodyさん
09/09/17 12:15:57
>>101
サーバ側でならRepeater.ItemDataBound イベントで処理する。
クライアント側でならJavaScriptで走査して処理する。

103:nobodyさん
09/09/17 15:36:36
チェックボックスOFF程度でバインドし直すのもな。
俺ならサーバー側もforeachで回す。

104:nobodyさん
09/09/17 16:26:00
なにをみてforeachで輪せばいいんですか?

105: [―{}@{}@{}-] nobodyさん
09/09/17 17:23:14
>>104
Repeaterの中をIDでFindControl

106:nobodyさん
09/09/17 23:30:47
FindControlでもいいけど、コントロール名を
ハードコーディングしたくない俺は大体再帰で回す。

protected void button_Click(object sender, EventArgs e) {
    clear(this.Repeater1.Controls);
}

protected void clear(ControlCollection controlCollection) {
    foreach (Control control in controlCollection) {
        if (control.GetType().Equals(typeof(CheckBox))) {
            ((CheckBox)control).Checked = false;
        }
        if (control.HasControls()) {
            clear(control.Controls);
        }
    }
}

107:nobodyさん
09/09/18 05:33:22
type='reset'なhtmlボタン配置したらどうだろうか

まあ俺なら、ページ出力時にクライアントサイドのスクリプトを動的に生成して出力しとく
チェックボックスオフにするためだけにポストバックさせたくない

今ならAjaxでやるのもありなのかもしれん。updatepanelだっけ?
その場合、Repeaterの中全部更新されるよね?

108:nobodyさん
09/09/18 09:52:05
>>107
CheckBox以外のControlsもあったらどうすんの?

109: [―{}@{}@{}-] nobodyさん
09/09/18 10:44:13
>>107
JQueryとか使うと楽ちんだわな

110:nobodyさん
09/09/18 15:09:35
>>108
その場合はその項目もリセットされるわな
それがまずいかどうかは>101の判断だろう
まあ、一番楽な方法としてリセットボタン考慮する価値はあるかと


111:nobodyさん
09/09/18 15:15:51
>type='reset'なhtmlボタン
そういえばそんなのもあったな。すっかり忘れてたわ。

112:nobodyさん
09/09/18 19:03:46
俺もClientスクリプトに一票

113:nobodyさん
09/09/19 03:13:45 ZjH1gzNN
今のプロジェクトはASP.NETで作ってるんだが、どうしても必要なのでJavaScriptも死ぬほど書いてる。
自分で実装してて思うんだが、こんなの俺以外に絶対に保守出来ない。
つーか俺自身でも3か月後には多分保守出来ないw

難しいシステムを無理やりWebで作るのはほんとアホとしか思えないぜ。

114:nobodyさん
09/09/19 04:39:22
うちは基本的にクライアントスクリプトの自前書きは禁止だなぁ@2.0環境
5行で書ける処理でもサーバー側でできるなら、そっちでやってもらってる。

>難しいシステムを無理やりWebで作るのはほんとアホとしか思えないぜ。
特に帳票とか帳票とか帳票とかな。まずデザインで死ねる。

更に、あたかも関数だらけのExcelのような動作を求められたりして死ねる。
入力項目50個超で1つ入力すると各項目を色々再計算/再描画とか言ってくるけど、
50個AutoPostback = trueな状態にするとブーブー言ってくるのは確定的に明らか。
こうなるとJavaScriptの出番になってしまい>>113みたいになって死ねる。
で、仕様変更があった時にJavaScript側で更に色々判定する必要がでてきてまた死ねる。

この経験からうちではクライアントスクリプト禁止令と、
「出来る出来ないで言えば出来ますが…は、ハッキリNoと言う」という
超基本的なことを徹底するようになった(´;ω;`)

115:nobodyさん
09/09/19 15:13:10
教えて下さい。
コードビハインドで作られてるんですけど、3つのaspxが指すコードが全て同じものを指してる
んですが、これっていいんですか?まあ動けばOKという格言もありますが。

Form1.aspxとForm2.aspxとForm3.aspxが全部FormCom.aspx.csを指してます。
ちなみにFormX.aspxは3つとも微妙に違っていて、載ってるコントロールなんかも違います。
その辺はFindcontrolしてnullかどうかをちゃんとチェックしてるようなんですが。

でもまあ、通常は基底クラスに全部詰め込んで、あとは各画面に対応するクラスを継承するのが
正しい方法だと思うんですが。

116:nobodyさん
09/09/19 17:07:25
>>115
>3つのaspxが指すコードが全て同じものを指してる
この発想はなかったわ。どう考えてもNGだろ。

117:nobodyさん
09/09/19 19:01:05
メリットが思いつかないな

118:nobodyさん
09/09/19 19:39:44
メリット
単純にコード記述量を減らせる。つまり試験工数も減るし、バグも減る。いい事尽くし。

3つのパターンで画面入力させるんだけど、画面上の項目が微妙に違う。(画面上の100項目の
うち10項目ほど)無論、3パターンを1画面でまかなって、区分によって項目のVisibleを制御
するのでもいいんだけど、いっそ3画面分のaspxを用意して、裏のcsは共通にしてしまおう、
と。デザイン指定が超絶シビアなので、Visibleで出したり隠したりとかしたくなかった。

基底クラスを継承、の場合でも、例えばボタンをクリックした場合のイベントはやっぱ3画面
それぞれ必要だよね。csが1つならとことんコード量を減らせる訳で。


まあ、「コード量が少ない」と「メンテしやすい」は等価じゃないけど。


119:nobodyさん
09/09/19 19:40:53
>>116
すいません、NGの理由ってなんでしょうか?

120:nobodyさん
09/09/19 20:00:26
自己フォロウ
開いてる画面によってはコントロールがあったり無かったりするので、不用意に

TextBox1.Text = "ほげ〜";

とか書けなくなる。全画面共通で必ず存在しているコントロールじゃない限り、一々FindControl
でコントロールを探さなきゃならない。

デメリットってこれぐらいだと思うンすけど。

121:nobodyさん
09/09/19 21:09:11
余りに阿呆らし過ぎて説明する気もおきん。
コボラ相手にしてる気分だ。
いいと思うならやればいいんじゃないンすか?


122:nobodyさん
09/09/19 21:16:18
>>121
ページが最終的にコンパイルされる仕組みを理解していれば、特に何の問題も無いわけだが?
理解出来ないなら黙ってた方が無知を晒さずに済むと思われ。

123:nobodyさん
09/09/19 21:22:24
ここのページに個別にJavaScriptを設定したくてもできなかったりとか
コントロール名を変更しても反映されなかったりとか
不必要なイベントハンドラメソッドが増えるとか
インテリセンスが意味をなさなくなってバグの温床になるとか

124:nobodyさん
09/09/19 21:32:36
それは、そういうデメリットもあるから、メリット・デメリットを天秤にかけて考えてね。
ってだけの話で、やってはいけない。という理由にはならない。
でもまあ、個人的には動けば正義だと思ってる

ちなみに「不必要なイベントハンドラメソッドが増えるとか」これだけ意味不明。



125:nobodyさん
09/09/19 21:45:24
>ちなみに「不必要なイベントハンドラメソッドが増えるとか」これだけ意味不明。
ボタンの数だけイベントハンドラメソッドが増えるでしょうが。
各ページに5個のボタンがあって、それぞれ別動作してたら15個のメソッドが存在することになる。

>でもまあ、個人的には動けば正義だと思ってる
保守性が下がるからやってはいけない
他人が見てもわけわからないことになるからやってはいけない
重複させるとインスタンス時に余計なサーバ資源を消費するからやってはいけない。
インテリセンスの動作が無駄になりバグの温床になるからやってはいけない。
エラー発生時にハイライトされた行が、どのページのエラーなのか一別しか分かりにくいからやってはいけない。
ページ初期化時に表示ページとは関係無い初期化にリソースが消費されるのでやってはいけない。

>それは、そういうデメリットもあるから、メリット・デメリットを天秤にかけて考えてね。
>ってだけの話で、やってはいけない。という理由にはならない。
デメリットのほうが圧倒的に大きいから「やってはいけない」ということでしょ。
単に自分がやってることを否定されたくないから、難癖つけて認めさせたいようにしか見えない。

126:nobodyさん
09/09/19 21:46:50
各ページに5個のボタンがあって、それぞれ別動作してたら15個のメソッドが存在することになる。

3枚の各ページに5個のボタンがあって、それぞれ別動作してたら15個のメソッドが存在することになる。


127:nobodyさん
09/09/19 21:55:05
>126
普通、そういうケースではさすがにこんなヒネたコードは書かんだろ常考。
各画面にボタンが5個あって、ページに関係なく処理が同じ(前画面に戻るとか)

15個のメソッドが必要なところを5個で済む

ていう事を言いたいんジャマイカ?


128:121
09/09/19 22:11:27
>>122
アホかw本来別にすべきものをまとめて、
何がコンパイル時には一緒になるからだ。
App_Code以下が単一dllになるからって、
1クラスに全部まとめて書くか?書かないだろ?
なぜだ?責務が異なるものは、分けるのが当たり前だからだろ?

ある画面専用の処理が追加になったらどうするんだ?
他の画面からしたら、全く関係のない処理があるクラスを実装してることになるぞ。
リファクタリングを一回でもやったことがあれば、
それがどんなにアホなことか分かるよな。

月日が経って、そのクラスを実装するaspxが増えたらどうなる?
その度にif文やFindControl判定が増えていくのか?
なんとも素晴らしい設計だな。

仕様変更時には影響範囲が特定できず、
ある画面だけの修正なのに、処理が重なっているために
全画面の動作検証を行わねばならなくなったりしないか?

つか、高凝集密結合が良くないなんて、学生でも分かるだろ?

で、業務上、そういうことにはならないように気を使ってますとでも言うのなら、
先に述べたように、お好きにどうぞってこった。

129:nobodyさん
09/09/19 22:26:02
多分元の質問者は「技術的に問題ありますか?」って事を聞きたいだけだと思われ。
そういう意味では「注意深く作るなら、別に問題はない」が回答。

ただし「将来的なメンテとか拡張とか修正とか考えると、3画面分まとめて1ソースに
すると身動き取れなくなったりしない?止めとけば?」ってのが周りのアドバイス。


130:nobodyさん
09/09/19 23:06:31
>>127
>ちなみにFormX.aspxは3つとも微妙に違っていて、載ってるコントロールなんかも違います。
って言ってるぞ。


131:nobodyさん
09/09/20 06:26:46
知識のない奴が一人前に提案して
不備を指摘されると逆ギレ
誤りを認めたくないから強弁するってガキの流行なんか?

132:nobodyさん
09/09/20 14:01:24
>>130
で?

133:nobodyさん
09/09/20 14:03:21
俺が認めない方法は許さない。
って馬鹿の粘着キモイ

>129 で出てる回答が全て。あとは自分で判断しろってことで終了。

134:nobodyさん
09/09/20 15:36:43
>>133
技術的に問題があるかどうかなんて聞いてないよ
本人は技術的には問題ないことを理解した上で、メリットデメリットの話をしてるんだから。

技術的に問題無いことを理解している発言は>>122でしてる。(技術的に)何の問題もないと。
メリットとデメリットの話をしようとしているのは>>120を見れば分かる。デメリットうんたらかんたらと。

135:nobodyさん
09/09/20 16:07:08
エスパー登場

136:nobodyさん
09/09/20 16:48:16
なんか、ある事例を今の我が事のように感情移入してしまう人が居ますが、
その3画面での共用する方法はある意味、仕組みを熟知して使い倒してますなw
ネイティブアプリでの共有ライブラリ、DLLの様ように。
禁止事項ではないから、開発&保守が効率的であればそれも選択肢としてアリだと思う。

137:nobodyさん
09/09/20 17:05:18
熟知しての実装なのか、無知ゆえの実装なのかはともかく(後者っぽいけど)、ケースに
よってはそういう手もあるのかと知ってちょっと感心した。

ビハインドコード共有!そういうのもあるのか

みたいなw
機能的に全く完全に差異がないけど、デザイン的にどうしようもない(ある仕入先と別の
仕入先で全く異なるデザインの画面)ケースなんかでは有効かも。

138:nobodyさん
09/09/20 17:09:01
>なんか、ある事例を今の我が事のように感情移入してしまう人が居ますが、
4:主観で決め付ける

>ネイティブアプリでの共有ライブラリ、DLLの様ように。
6:一見関係ありそうで関係ない話を始める

>禁止事項ではないから、開発&保守が効率的であればそれも選択肢としてアリだと思う。
1:事実に対して仮定を持ち出す
10:ありえない解決策を図る
12:決着した話を経緯を無視して蒸し返す

というか自演乙

139:nobodyさん
09/09/20 17:54:42
というか、aspxのページを新規生成すると、
ロジックを記述するパーシャルクラス(ページなんちゃら.aspx.cs)と、
コントロールなどのメンバ変数を宣言する.aspxが自動生成するパーシャルクラスの
二つが作られるわけでしょ?

後者はVSがページ毎に自動生成するからaspxと1対1になってる
コードビハインドは、そのメンバ変数を参照してる(からインテリセンスで補完してくれる)わけで
いくらpageのインスタンスを所有していて、そこからFindControlで操作したいコントロールを見つけられるとしても
メンバ変数として宣言されてるコントロールを一切使用しないなんて、
asp.net以前にオブジェクト指向の設計として間違ってるような気がするのは俺だけ?

クラスで例えれば、
メソッド内では決して参照しないまったく関係無いコントロールのインスタンスをメンバ変数として保持し、
メソッド内で操作したいコントロールのインスタンスは、すべてメソッドの引数として得て操作してるような感じ。
じゃあ、メンバ変数として所持してるインスタンスってなに?
その都度無駄にコントロールのインスタンスを生成するの?ってな感じになると思うんだ。

技術的に問題ないとか、問題なければやってもいいだろとか別次元の話だと思うんだけど。
動けば害はないし、禁止されてないからということで、1行ごとにThread.Sleepをしかけまくるみたいな。

140:nobodyさん
09/09/20 17:58:03
君さ、もう「宗教上の理由で俺は断固として認めない」とでも言えば?('A`

141:139
09/09/20 18:05:49
なんだかわからんが、初の書き込みなんだが
というかで始めたのがまずかったか

142:nobodyさん
09/09/20 18:13:57
すまんが

技術的な見地
思想的な見地
メンテや修正といった見地

で分けて議論?してくれ。じゃないと収束せんだろ。

>技術的に問題ないとか、問題なければやってもいいだろとか別次元の話だと思うんだけど。

じゃあ技術的には問題なし、思想的に不可。でいいじゃん。

143:nobodyさん
09/09/20 18:38:22
>>142
いや、技術的に問題ないわけないじゃんね。
それ以前の話。
無駄なあえてわざと無駄な変数宣言をしてインスタンスを生成することは
動くけど技術以前の問題だろ?
1行ごとにSleepかませたり、ところどころ無駄な変数を宣言してインスタンスを生成したり
技術とか思想以前の問題

144:nobodyさん
09/09/20 19:12:59
どうしても「俺が認めないものは認められない」つー馬鹿がいるな。
1行ごとにsleepかけようが、ASP.NET的には全然OK。

でもそういう実装が実際に許されるか否かは、そのアプリの目的に依存するんで可否を決
めようがない。

InProcで動いてる時にSessionに1GBのobjectを突っ込むのも、ASP.NET的には問題なし。
でもほんとにそんなことをしていいかどうかは求められてる仕様や環境次第。


技術以前の問題だっつーなら、技術以前の問題と技術的な問題に切り分けろよ。


145:nobodyさん
09/09/20 19:58:30
>>144
>どうしても「俺が認めないものは認められない」つー馬鹿がいるな。
お前のことか?

>1行ごとにsleepかけようが、ASP.NET的には全然OK。
>InProcで動いてる時にSessionに1GBのobjectを突っ込むのも、ASP.NET的には問題なし。
アホかよw

>そのアプリの目的に依存するんで可否を決めようがない。
>ほんとにそんなことをしていいかどうかは求められてる仕様や環境次第。
ほとんど否だろ?もしくはしないほうが望ましいとされるだろうな。
自分に有利な条件を想像すんなよ。

「認められる仕様があるかもしれない」って都合の良い言い方だよな。
90-10ぐらいでほとんど認められない状況を、可否は判断できないとして
強引に50-50まで戻せるんだからw

なんで、そこまでしてむりくり正当化して自分の無知を認めたがらないのかね

146:nobodyさん
09/09/20 20:04:08
>>144
その意味不明な改行の仕方といい自演バレバレですよ?

147:nobodyさん
09/09/20 20:15:01
ID出ない弊害だな。

148:nobodyさん
09/09/20 20:39:04
IDなんていくらでも変更できる
自演の中身は文章で判断するしかない
偉い人にはそれがわからんのですよ

149:nobodyさん
09/09/20 21:09:34
ぶっかけ秋田。どっちでもいい。

150:nobodyさん
09/09/20 21:19:00
>>148
こういうとき使うのは逆。

151:nobodyさん
09/09/20 23:35:57
>>145
とりあえずお前が、技術的に問題ない という日本語の意味を理解してないのは理解した


152:nobodyさん
09/09/21 00:39:40
ここまで全部俺の自演

153:nobodyさん
09/09/21 11:40:40
>>151
とりあえずお前が、日本語を理解してないのは理解した

154:nobodyさん
09/09/21 14:04:37
複数のaspxが同じcsを指すのって普通に使ってたんだが・・・
褒められた作りじゃないにしても、いまの所これが原因で動作がおかしくなったとかは無い。

155:nobodyさん
09/09/21 14:16:06
>>154
>褒められた作りじゃないにしても、
いや、だからみんなこれを言ってるんだろ


156:nobodyさん
09/09/21 15:20:59
なに?またループさせたいの?

褒められた作りじゃないが、有りといえば有り。

いや無しだろ。動く動かない以前の問題だ

最初に戻る

157:nobodyさん
09/09/21 16:47:03
TableAdapterを使う場合にトランザクションかけられないのが
ものすごく不便に感じていたがReflection使えばよかったんだな。
URLリンク(weblogs.asp.net)

ちょっと無理矢理な気もするが、自前で全部用意するよりはかなり楽になりそうだ。
今まで「TableAdapterつかえねー」の一念だけで、ろくに調べもしなかった自分に反省。
個人的にはこれで使わない理由はなくなった。ちょっと試してみよう。

158:nobodyさん
09/09/21 18:47:39
必要ないインスタンスが生成されるのを「有り」とする人が多いのに驚いた

>>157
TransactionScope使えばかけられるんじゃないの?
URLリンク(blogs.msdn.com)

リフレクションは便利だけど、遅いしコンパイルのチェックが入らないから美しくない
最低減で使う分にはいいけど、メソッドの呼出とかで使いまくってる奴をみると
C#という静的言語を一体なんだと思っているのかと小一時間チクビ舐めてやる

159:nobodyさん
09/09/21 18:51:28
>>156
俺も無しに一票だな
今、テレビ見てたんだが、「第二音声では英語で実況しています」というテロップが日本語で入っていた

つまり、こういうことだ

日本語でアナウンスしてしまったから、英語で聞きたい人に伝わらないけど、
いちおう第二音声で実況しているから有り

いや無しだろ。英語で実況しているしていない以前の問題だ。

最初に戻る←いや戻らない戻らないwww 英語でテロップだせよww

160:157
09/09/21 18:52:15
>>158
TransactionScopeは、むかーしになんかの理由で
使えないなーって判断した記憶があるが忘れたな。
もう一回調べてみる。ありがとう。

161:nobodyさん
09/09/21 19:04:48
MS-DTCが使えないとか、サーバの関係かな?
使えると便利なんだけどね。TeansactionScope。
結局なんだかんだいって、SQLサーバにすべてクエリ登録して、
アプリ側ではストアドだけ呼び出すのが正しいのかなという気がするよ。

162:nobodyさん
09/09/21 22:11:19
駄目な相対化の例をこんなとこでも見るとは・・・

163:nobodyさん
09/09/22 00:49:26
いつか誰かが突っ込むだろうと思ってずっと待ってんだけど、なんで誰も指摘しないの?
馬鹿っぷりを曝け出してる様をみてニヤニアしてんの?
つーわけで

 不 要 な イ ン ス タ ン ス っ て 何 ?


TextBox1,2,3があるページと、TextBox1,3,4があるページの両方が同じ分離コードをさしてる
として、片方のページを表示してるとTextBox1,2,3,4のインスタンスが出来るとでも思ってる
の?馬鹿なの?死ぬの?

164:nobodyさん
09/09/22 11:06:33
>>163
ASP.NETの勉強をし直してからまたおいでね

165:nobodyさん
09/09/22 12:44:19
>>139
> メンバ変数として宣言されてるコントロールを一切使用しないなんて、
> asp.net以前にオブジェクト指向の設計として間違ってるような気がするのは俺だけ?

逆だろ。
自動生成されたメンバ変数を使いつつ、コードを共有したいから、
共通の基底クラスを継承するのではなく、コードビハインドを共有するんだろ。

共通の基底クラスを継承する場合は、
基底クラスでは全てのコントロールをFindControlしなければならないが、
コードビハインドの共有なら、共通のコントロールに限り、メンバ変数が使える。

166:nobodyさん
09/09/22 13:11:19
>>163
彼の主張する不要なインスタンスについては>>139に書いてある内容だと思う

>ロジックを記述するパーシャルクラス(ページなんちゃら.aspx.cs)と、
>コントロールなどのメンバ変数を宣言する.aspxが自動生成するパーシャルクラスの
>二つが作られるわけでしょ?
バージョンもWEBサイトかWEBアプリかも特定せずにメンバ変数を宣言するパーシャルクラスが自動生成されてるとか
パーシャルクラス(宣言のコード)なのにクラスが二つ作成されるとか

>コードビハインドは、そのメンバ変数を参照してる(からインテリセンスで補完してくれる)わけで
コードビハインドだと勝手にメンバ変数参照してるとか
メンバ変数参照してるからインテリセンスがきくとか

>メソッド内では決して参照しないまったく関係無いコントロールのインスタンスをメンバ変数として保持し、
必ず存在しているコントロールじゃない限り、一々FindControl(>120)って発言を無視してるとか

もうね、>>164のアンカーは自分に向けとけとしか


167:nobodyさん
09/09/22 14:17:50
不要なインスタンス云々を言ってる奴って、型付DataSetとか絶対認めない・使わないのかなw

コード内でDataColumnsを定義するのがメンドクセーって理由だけで型付DataSetを使うと、使わない
メソッドが腐るほど自動生成されるよね。それって無駄だから型付DataSetは使用禁止!ってル
ール?w



168:nobodyさん
09/09/22 15:44:08
なんか急に関係ない話し始めたやつがいるぞw

169:nobodyさん
09/09/22 16:40:24
そもそもイミフな意見を、煽らんがために
エスパー解釈するから余計面倒なことになってるな。

170:nobodyさん
09/09/22 17:42:14
流れを読まずに質問してみる。
ASP.NETが生成するhtmlが30MB位になって、クライアントPCにダウンロード完了してから
実際にブラウザに表示されるまで30分ほどかかるんだけど、なんか上手い改善策ある?

サバーサイドの処理が重い訳じゃないので、どうしていいか分からなくて。

171:nobodyさん
09/09/22 17:59:03
30分ワロタw
画像含まずにhtmlだけで30MB?
いったいどんなシステムなんだよ。

ページ分けるしかないでしょ
必要な時に、必要な分だけしぼりこんで表示。

172:nobodyさん
09/09/22 19:32:16
>>165
>自動生成されたメンバ変数を使いつつ、コードを共有したいから、
>共通の基底クラスを継承するのではなく、コードビハインドを共有するんだろ。
逆だと思うのはコードの共有を目的とする観点からみてるから「逆」ってだけでしょ?
ページごとに、そのページが所有するコントロールの変数を
メンバ変数としてVisualStudioが宣言してるんだから、
VSつまりマイクロソフト的には1ページ1コードビハインド記述ファイルを前提ってことじゃないのってこと。

>パーシャルクラス(宣言のコード)なのにクラスが二つ作成されるとか
クラスが二つなんて書いてないじゃん。作文?

>必ず存在しているコントロールじゃない限り、一々FindControl(>120)って発言を無視してるとか
だから必ず存在している場合は、メンバ変数として宣言されてるからそれを参照できるわけでしょ?
ない場合があるからFindControlしてるわけで。

>メンバ変数参照してるからインテリセンスがきくとか
インテリセンスが聞くのは、コントロールをメンバ変数に宣言してるパーシャルクラスを
VSが自動生成してるからじゃないの?違うなら俺の間違いだな。すまなかった。

>もうね、>>164のアンカーは自分に向けとけとしか
>>164は俺じゃないよ




173:nobodyさん
09/09/22 19:35:00
やっぱそうだよなぁ。もはやページングしか残されてないよなぁ。
画像含まず、TextBoxとDropDownListとLabelとCheckBoxだけで構成されてるのに、htmlソース
で30MBとかいきます。ページングにすると更新のタイミングとかウザイんですよねえ。
俺オワタ

174:nobodyさん
09/09/22 19:41:58
>>166
>>メソッド内では決して参照しないまったく関係無いコントロールのインスタンスをメンバ変数として保持し、
>必ず存在しているコントロールじゃない限り、一々FindControl(>120)って発言を無視してるとか
それから例えとして書いてるのに、それを本筋に当てはめて見当違いのレスするのは止めようよ。
「クラスで例えれば〜という感じになると思うんだ。」って書いてるじゃん。
そういうように書いてるぐらい「アホ」なやり方をしているっていうわけで、
そういうような仕組みでASP.NETが動いてるなんてかいちゃいないだろ?

>TextBox1,2,3があるページと、TextBox1,3,4があるページの両方が同じ分離コードをさしてる
>として、片方のページを表示してるとTextBox1,2,3,4のインスタンスが出来るとでも思ってる
>の?馬鹿なの?死ぬの?
これも同じ。だれも作られるなんて言ってないだろ?
メンバ変数で宣言されてるのにそれを参照しないコードの書き方がおかしいんじゃないのっていってんの。

つまり、おまえの批判はこういう的外れなことをいってるわけ。

酒井法子って覚醒剤やってたんだな・・・
これで逮捕されてもう芸能界じゃやっていけないだろ

ほんとだな万引きで捕まったぐらい恥ずかしいよな

お前バカじゃねぇ?酒井法子は万引きで捕まったんじゃねーよ。
ひょっとして万引きで捕まったとおもってんの?バカなの?死ぬの?

こんな感じ

175:nobodyさん
09/09/22 19:59:09
シルバーウィーク進行中

176:nobodyさん
09/09/22 20:18:47
>>172
クラス2個作られるのが俺の作文だっていうなら
>ロジックを記述するパーシャルクラス(ページなんちゃら.aspx.cs)と、
>コントロールなどのメンバ変数を宣言する.aspxが自動生成するパーシャルクラスの
>二つが作られるわけでしょ?
を解説してくれ

そして、
>必要ないインスタンスが生成されるのを「有り」とする人が多いのに驚いた
の必要ないインスタンスとは何か説明してくれ

177:nobodyさん
09/09/22 20:22:23
>>173
こないだの1000だか3000だか5000だかの
大量のコントロールを埋め込もうとしてた人?

178:nobodyさん
09/09/22 22:49:18
>>173
1000とか3000とか5000とかそんな桁じゃないんで違う人です。1桁違う。
5万コントロールとか10万コントロールとかそういう数なんで。

179:nobodyさん
09/09/22 23:41:39
もはや御愁傷様としか…w

180:nobodyさん
09/09/23 00:08:00
>>178
何をやってるのか、ぜひ教えてくれ。 面白そうだ。
30分かけて表示されたページは、まともに動くの?

あと、 >>172 >>176 メールでやれ。

181:nobodyさん
09/09/23 00:42:51
複数のaspxのbehind-codeが共有されてるのに拒否反応示す人が多いのに驚いた。
幾つかのProjを見てきたけど、使ってるところは多い。別に禁断の技とか行儀の悪い実装
と言うことも無く、現場によっては普通に使われるテクニック。まあ、有効な局面が限られる
と思うが。

ちなみに「VisualStudio様がデフォで作ってるんだからそれが前提」とか書いてるけど、VS
が吐き出した自動コードをあとから手で書き換えるとか、半ば当然だと思うが。VS様はそ
んなに柔軟でもないし、賢くもない。

182:nobodyさん
09/09/23 00:52:11
>>181
いろいろ書きたくなっちゃうのは分かるけど、もういいから。

183:nobodyさん
09/09/23 02:36:28
>>170
設計者氏ねとしか言いようが無いな

184:nobodyさん
09/09/23 04:15:41
ASP.NET AJAXでWEBアプリケーションを開発しています。
JQueryのリッチなUIも交えて、開発したいのですが、以下のSilverLightの例のように、
HTML要素クリック時、あるいは、JavaScriptのメソッドからCSファイルのC#の
メソッドを実行するようなことはできないのでしょうか?
URLリンク(www.atmarkit.co.jp)

当方、かなり初心者なので、無茶苦茶な質問をしているかもしれません。

185:nobodyさん
09/09/23 05:33:46
>>176
>を解説してくれ
クラスは一個
その一つのクラスのパーシャルクラスが2個

>の必要ないインスタンスとは何か説明してくれ
必要のないインスタンスは必要のないインスタンスだ
それ以上でも以下でもない
動作するからといって、1行ごとにSleep噛ますのは意味ないよな?
それと同じように、1行ごとに必要ないインスタンスを生成しても意味ないっていってんの。
換言すれば、「動作するからといって1行ごとにSleepいれるのをアリとする人が多いのに驚いた」でもいいぞ?

ただし技術的に問題ないって主張してる人は、Sleep噛ましても動けばokらしいよ
Sleep噛ましても問題ないぐらいだから、1行ごとに不必要なインスタンス生成するぐらい余裕で許容すると思うけどww
>>144に書いてある。

186:nobodyさん
09/09/23 05:53:29
>>184
HTML要素がOnClickイベントを持っていて、フックしてClientScriptを実行できるなら
一番簡単なのは、ポストバックイベントを発生させることのできるコントロールを設置して
それをJavaScriptで実行させるのが一番簡単。
例えばボタン、ハイパーリンクとかをObject.Click();すればいい。
必要ならスタイルシートで背景と同化させるとか、見えなくさせたり。

まじめにやるならこのへんで
URLリンク(msdn.microsoft.com)

187:nobodyさん
09/09/23 08:31:09
>>181
具体性の無いレスはいらないから

188:nobodyさん
09/09/23 15:01:49
メールでやらないなら、IDだしてやってくれないかな。NGすっから。

189:nobodyさん
09/09/23 16:01:00
>>185
いい加減空気嫁

190:nobodyさん
09/09/23 16:57:49
>>186
おお!!
まさに知りたかったことです。ありがとうございます。
ModalPopupExtenderのときもダミーコントロールを使用した経験がありますが、
結構ダミーとして使うことってあるんですね!!

191:nobodyさん
09/09/24 14:23:39
IEだと問題なくて、FirefoxだとLinkButtonを押してもPostBackされないのは、どこを直せば
対応出来ますか?

以前の案件ではIE/FF/Opera/Safari/Chrome全部で動いてたはずなのに、今作って確認したら
IEでしか動かない('A`

192:nobodyさん
09/09/24 14:39:55
>>173
データベースならDataSet、固定のデータならArrayを持ち回りすれば更新関係が楽になるんじゃない?
DataSet、ArrayはSerializableだったはずだったから、これをセッションで持ってて
これを元にページングして表示し編集させる。
最後に更新ボタンがあって、これをクリックすると、それまで編集されたデータを一斉に更新するとか。

つまりページングや編集は、セッションで持ってるデータに対して行って、
最後に更新ボタンを押した瞬間に、編集された行のみ必要なら整合性チェックして保存していくような感じで。

193:nobodyさん
09/09/24 14:41:20
>>191
まずLinkButtonだけを設置したテストページでポストバックしないかどうかをチェックして。

194:nobodyさん
09/09/25 11:15:43
要件で定義されてる上限まで行数増やしてページ表示させたら、ページ上のコントロールの
数が16万超とかマジでどんだけーw
12時間経ってもまだ入力出来る状態にならないw

>>192
ページングも案の一つだったんですが、グーグルクルムが思った以上に軽いんで、もしかす
ると「IEで重いようならクルム使ってね」で逃げるかも。

195:nobodyさん
09/09/25 12:17:35
>>194
どうしても大量のデータ一覧表示しつつ、ぽこぽこ書き換えたいなら、
1レコード毎の書き換えが可能ならば、表示はテキストのみにして、行のクリックかなにかで入力できる形にjavascriptで書き換えて、入力完了したら
行ごとにajaxかなんかで書き換えするようにするかなぁ。 


196:nobodyさん
09/09/25 13:02:30
>>194
ASP.NET vs 人間、ストレステストのネタとして最適ですね。

197:nobodyさん
09/09/25 19:58:58
>>194
IEは</table>が来るまで描画しないと思うので、
全体を一つのtableで囲むのを止めたらどうだろう
そしたら送られてくるhtmlごとに上から順番に描画してくれると思う。
ASPのほうでも、その都度、ブラウザに送信するとかの設定も必要だったはず。

198:nobodyさん
09/09/25 20:31:25
>>197
一番外側に大きなTABLEタグがあって、それはもう削除し様が無いのです('A`

ところで、この巨大なGRID形式の入力ページを、最初は市販のコンポーネントを買って実現し
ようか迷ってたんです。Grea○CityのSPR○AD .NET3J

Repeaterでひたすら自分でクルクル輪姦してhtmlを生成するのとどっちがよかったんかなぁ。
初めて使うコンポーネンツで躊躇したのと、軽量シンプルなhtmlを吐き出すのはrepeater使用
時だろうという推測で結局コンポーネントは使わなかったんですが、実は使ってた方がレスポ
ンス向上してたのかなぁ。こればっかりは今でも分かりません。

199:nobodyさん
09/09/25 20:44:18
>>198
今は自前でResponse.Writeなりしてるってこと?
想像だけど、Repeaterのほうが遅いと思う。
何万件とかなら、どんなコンポーネントを使っても快適とかはないと思うよ。
数が変化するなら、アプリで作っても通信だけで相当な時間がかかると思うし。

こうなったら、エクセルに出力させて編集させて、
今度はCSVファイルをアップロードして登録とかにしたら?

200:nobodyさん
09/09/26 08:44:34
>>198
GrapeCityのサイトでデモ使ってみたことある?
うちでは超遅かったよ

201:nobodyさん
09/09/26 15:17:01
久しぶりにきたが
まだ大量のコントロール使ったときの話してるのか?




ところで、asp.net のワーカープロセス(aspnet_wp.exe)の更新がきてるが
修正内容がまだわからんな。

しばらくしたら KnowledgeBase に載るとは思うが。
URLリンク(support.microsoft.com)

202:nobodyさん
09/09/26 19:51:06
>>201
今ホットなのはコードビハインダー

203:nobodyさん
09/09/26 20:15:29
おまいら、ドメインモデルどうですか。
おいらはまだ勉強中なので、ドメインモデルが何かすらきちんと説明できませんが。

↓ASP.NETでやってる人もいますよ
ドメインモデル VS トランザクションスクリプト
スレリンク(php板:42番)

204:nobodyさん
09/09/26 23:49:54
asp.netでのドメインモデルってやりにくくないかえ?
WebServiceありのサーバサイドありのJavaScriptでドメインモデルってやってられねーって感じ。
更にAJAXなんて入ってきたら設計で死ねるw。
VirtualBoxのソースを読んでても思うけど「管理大変そう」w。

205:nobodyさん
09/09/28 04:18:26
マスターページについて質問です。
ある子ページでのみ必要なcss, jsがあるのですが、
マスターページ自体をいじることなくインポート出来ないでしょうか。

マスターページのheadタグ内にcontentPlaceHolderを置くことで、
子ページからhead要素にアクセスすることは出来ましたが、
これだとビルドの度に警告が表示されて鬱陶しく感じます。

206:nobodyさん
09/09/28 08:03:54
マスターページを入れ子にするとか?

207:nobodyさん
09/09/28 09:14:36
警告を無視する。

CやC++の仕事の時は警告が1件でもあったらうるさく言われてたけど、C#は基本は警告無視。

208:nobodyさん
09/09/28 13:07:10
コードで.jsファイルインポートしても警告でるっけ?
ClientScriptBlockほげほげとかいうやつ

209:nobodyさん
09/09/28 17:14:16
>>205
>ビルドの度に警告が表示されて
普通にVS2008でマスターページ追加すると<head>の中に初めから
ContentPlaceHolder設置されてるんだが、どんな警告がでるんだ?


210:205
09/09/28 18:58:14 Nc4wliQp
VS2005無印 ASP.NET2.0ですが、
ContentPlaceHolderは不明な要素〜みたいな警告です。
あり得ないタグを使った時と同じ内容だったと記憶してます。
家では環境構築してないので…すみません。

警告は無視する方向で行きます。
ありがとうございます。

211:nobodyさん
09/09/28 19:18:41
HtmlLink link = new HtmlLink();
link.Href = "StyleSheet.css";
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
Master.Page.Header.Controls.Add(link);

212:nobodyさん
09/09/28 19:41:37
普通にこれ使えばいいんじゃないの?
URLリンク(msdn.microsoft.com)

マスターページを適用した一部のページだけなんだから、
その一部のページのコードビハインドファイルに記述すればいいじゃない?

213:nobodyさん
09/09/29 22:38:09
ListBoxでプルダウン選択したときに、Labelの値をViewStateから持ってきて変更したいのですが、
ポストバックしないで実装する方法はありますでしょうか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4975日前に更新/322 KB
担当:undef