【質問】ASP.NETスレ ..
2:nobodyさん
09/09/01 21:25:49
otu
3:nobodyさん
09/09/01 22:35:54
ASP.NETで作られたページって重くないですか?
昔から重いイメージがあるんですが
4:nobodyさん
09/09/03 10:48:20
ASP.NETで、aspxファイルのあるディレクトリを求めるにはどうしたらいいですか。
たとえば aspxファイルが C:¥Inetpub¥wwwroot¥app¥foo.aspx だとして、
求めたいのは C:¥Inetpub¥wwwroot¥app です。
System.IO.Directory.GetCurrentDirectory() を使うと C:¥Windows¥System32 が帰ってくるので困ってます。
5:nobodyさん
09/09/03 10:59:45
Server.MapPath
6:nobodyさん
09/09/03 11:07:32
>>5
Server.MapPath(".")
で取得できました。ありがとうございます。
7:nobodyさん
09/09/03 16:07:15
>>3
ページのサイズは他のフレームワークに比べ、肥大化する傾向があるな。
そういう意味では他と比べて重くなるかもしれない。
とはいえ、ちゃんとしたベンチは取ったことはないが、
ASPで作ったページよりASP.NETで作ったページは体感で重く感じるな。
ポストバックが目にうるさいというのもあるが。
DB周りは速くなってたので、サーバーコントロールのレンダリングが
大変なんだろなーということで俺の中で決着した。
8:nobodyさん
09/09/03 16:34:06
●ASPとASP.NETのベンチマーク
URLリンク(www.atmarkit.co.jp)
●CGI(C++)とASP.NET、ASP、PHPのベンチマーク
URLリンク(www.wrensoft.com)
●PHPとASP.NETのベンチマーク
URLリンク(www.misfitgeek.com)
9:nobodyさん
09/09/03 20:02:33
ASP.NETって、1回目のページの表示が遅い気がするんだよな、体感的に
でも2回目以降はそんなに遅いとは感じられない
プリコンパイルかけても1回目は遅い気がするから、遅いのはASP.NETじゃなくて
IISかもしれないが、まあその区別はあんまり意味がないかもしれん
10:nobodyさん
09/09/03 22:41:47 wWmDoC3T
質問。
C#で列挙型って内部的に整数をもっているけど、
これを文字列型にしたい。できないのかな?
URLリンク(msdn.microsoft.com)
やりたいことは、関数の引数の値(string)を限定したい。
11:nobodyさん
09/09/03 22:44:57
>>10
enum FlyType { Eco, Bus, Fst };
で宣言したら、Eco.ToString()でstring型で"Eco"が取得できない?
12:nobodyさん
09/09/03 22:45:43
すまんFlyType.Eco.ToString()か
13:nobodyさん
09/09/03 22:47:51
さらにすまん。数字を文字列として取得したいなら、((int)FlyType.Eco).ToString()か
14:nobodyさん
09/09/04 00:52:00 7hywDWuE
>>11
ども。
>enum FlyType { Eco, Bus, Fst };
このとき、
Eco="001"
Bus="002"
Fst ="003"
としたいです。
現行システムで、DBの値に固定で持っているので。
((int)FlyType.Eco).ToString()のあとにゼロパッディングすれば、
できそうですが、もっとスマートな方法はないでしょうか?
"AAA"などの英字にも対応したいです。
15:nobodyさん
09/09/04 00:57:14
つか、ASP.NET関係ないし。C#のスレで聞けよ
16:nobodyさん
09/09/04 01:05:24 7hywDWuE
すいません、ASP.NETとは直接関係ないですが。
URLリンク(ascii.jp)
のサンプル07のように、入力フォームにdl,dt,ddタグを使うのはありでしょうか?
tableタグを使うよりカッコイイと思いましたw
クロスブラウザでスタイルを考慮すると、cssで苦労しそうですか?
とくに修正時(修正者が作成者と違う場合)のコストが大きい?
17:nobodyさん
09/09/04 01:12:33
>>14
あるけどない
ないというのは、結局地道に↓みたいに自作するしかない
URLリンク(www.atmarkit.co.jp)
あるというのは、泥臭く自分で作るしかないけど、そういうクラスを自分用で定義して、
静的クラスとして利用すれば、それなりにスマートに利用できるし、
拡張メソッドを使えば、静的メソッドをインスタンスメソッドのように呼び出すことができる。
18:nobodyさん
09/09/06 03:50:25
>>16
ここよりWeb制作板の方が適切だと思う。
個人的には前者はアリ。後者は自前で全て用意せず、
css / javascriptフレームワークを使用するのが吉。
19:nobodyさん
09/09/06 23:11:26
ASP.NETの標準的な組み方が分からない…。
www.asp.netのサンプルやらMS謹製含む書籍を見てもみんなバラバラ。
BLLとDALに分けるんじゃなかったのかよと。
ある本では型付きデータセット最強と書いてて、
またある本では型付きデータセットは複雑な業務ロジックに使えないから
自前のエンティティクラスをバインドすべしと書いてあって、
いや、型付き無しのデータセットで十分みたいな論もあったり。
もう訳分からん。
で、「このやり方ならOKだ!」みたいな文句に惑わされてホイホイリンクを辿ると、
どっかの会社の独自フレームワークか、SqlDataSource一つだけのしょぼいサンプルとか。
もう疲れたよママン
20:nobodyさん
09/09/06 23:23:40
>>19
まあ、それぞれ開発者によって前提が違うので言ってることがバラバラになるのは当たり前だと思うよ。
鵜呑みにするんじゃなくて、自分でそれぞれの手法のメリットとデメリットを書き出してみて、
自分の立場で一番優れていると思う手法を採用すればいいだけのこと。
それはASP.NETに限ったこっちゃないけど。
21:nobodyさん
09/09/06 23:41:50
エンティティクラス→VS2008以降、LinqToEntityを使用
型付きDataSet→クエリ固定でVSが自動的に作成するDataSet
型無しDataSet→クエリを動的に生成して自分でDBからデータを取得
という位置づけで書いてるんじゃね?
型無し、型付きは、それぞれが問題じゃなくて、それを実装するコストが問題なんでしょ。
クエリ固定で、where文ぐらいを動的に生成すればいいぐらいなら、IDEが自動で作ってくれる
型付きDataSetでも十分。複雑なクエリで動的にクエリを発行しなけりゃならい場合は、
型付きデータセットの定義を作製するのが面倒だから、別に型付きでなくていいよって話ではないかと。
22:nobodyさん
09/09/07 04:57:31
>>19
まず、前提としてるバージョンをよく確認しないとだめだぜ
あとは対照としてる規模とかにもよって変わるしな
で、最適な組み方は設計方法によっても違う
標準といわれる設計がないので、標準的な組み方もないんだよ
23:nobodyさん
09/09/07 23:10:36
ちょっと経験談を聞かせてくれ。FormView のテンプレートで Insert と Edit
の中身がほとんど一緒なんだけど微妙に違う、みたいな時どうしてる? Edit
だとキー項目は見せてもいじらせないとか。
DRY 原則に従い、CompositeControl 継承したカスタムコントロールを
毎回自作しているが、これで良いのかどうかわからん。慣れてしまえば楽
だが、そもそも ASP.NET ってなるべくコード書かないようにするための
仕組みだし、メンテナが変わった時の引き継ぎがめんどいなあと悩み中。
24:nobodyさん
09/09/07 23:36:23
>そもそも ASP.NET ってなるべくコード書かないようにするための仕組み
ASP.NETをフレームワークとして捉えるならその通りなんだけど、
カスタマイズ性の乏しいFormViewとかGridViewは、
あると便利的なコントロールなんで、
フレームワークの一つとして捉えるのは本末転倒だと思う
なんて言うのかな
個々に特化したサーバコントロールは料理に例えると、めんつゆであり、ポン酢。
蕎麦やしゃぶしゃぶとか、それぞれにマッチした料理にはぴったりだけど、互いの流用はできない。
基本となるサーバコントロールは醤油。鰹だしとみりんでめんつゆだし、柑橘類があればポン酢にもなる。
自分なら基本的なサーバコントロールの醤油だけ使って作成するかな。
25:23
09/09/08 00:07:14
>>24
言ってる意味がわからんが、FormView はテンプレートで自由に
レイアウトをカスタマイズできるし、ObjectDataSource と組み
合わせて DB アクセスするにはもってこいじゃないの?
醤油だけで作るってのはつまり、FormView を使わないってこと?
俺にしてみりゃあり得ん話だが、なぜそうするのか理由が知りたい。
26:nobodyさん
09/09/08 00:21:04
>>25
既に書いてるけど、めんつゆに合う料理ならめんつゆでいいし、ポン酢ならポン酢に合う料理に使えばいい。
そのかわり、基本はめんつゆやポン酢なので、許容範囲が狭い。
醤油なら、めんつゆもポン酢も作れるし、もちろん醤油ベースのステーキソースも作れる。
ポン酢やめんつゆで料理が簡単に作れるのはいいけど、
それに捕らわれて料理全般の多様性が減ったり、
ベースとなるめんつゆやポン酢以上の味が作れないと感じるから。
もちろんポン酢を利用してる人でも、醤油ベースで様々な料理は作れるけど、
そこにポン酢のメリットや利便性を醤油に求めるのはおかしいと思うってこと。
27:23
09/09/08 00:42:27
>>26
ありがとう。醤油は好きだが理解しあえないのが良くわかった。
>>23 を読み返して自分でも意味不明だったので再度書いてみる。
FormView の InsertItem と EditItem の内容がほとんど同じだけど微妙に違う
という状況はメンテナンス性が悪いし、コードも重複するので何とかしたい。
同じ内容の検証コントロールをそれぞれに貼るとか耐えられない。
そこで、モードによってレイアウトと機能を切り替えるカスタムコントロール
を自作し、FormView の InsertItem と EditItem にそれぞれ貼り付けている。
これでレイアウトと機能が再利用できる。もちろん DataBindings の設定は重複
するが、現状ではそこを追求しても仕方がないので割り切っている。
これは割と良くある状況だと思うのだが、経験談を聞かせてもらえると嬉しい。
28:nobodyさん
09/09/08 01:02:56
>これは割と良くある状況だと思うのだが、経験談を聞かせてもらえると嬉しい。
ない
FormViewなんてつかわない
29:nobodyさん
09/09/08 07:59:50
>>27
漏れのやってるプロジェクトもFormView使ってるが、もう諦めてPerlかなんかで置換スクリプト書こうと思ってる。
クラス継承して作ってもインターフェースのどのメソッドが呼ばれているか分からんし、MVCとかDynamicDataとかで使うとなると内部の手続き調べるのが大変。ソースコピペを自動化した方が良いと思う。
30:nobodyさん
09/09/08 09:02:28
やはりどこも同じか。
>>27
>FormView の InsertItem と EditItem の内容がほとんど同じだけど微妙に違うという状況
この微妙というのが、どの程度の微妙さかにもよるんだけど、
ウチは開き直って登録と修正を別のUserControl, FormViewにしてしまうことが多い。
確かに分けると重複する部分が出てくるが、
経験上、一つにまとめてしまうと度重なるメンテを受けた後、
それぞれのモードの専用処理が恐ろしいことになりやすい。
また、そもそも初期状態でも、モードごとの専用処理を抜き出すと
それだけで結構な分量になっていることがある。
じゃあ1クラスで全て完結させるのは諦めて、
完全に共通な処理を外出ししてから、
それぞれのモードを別クラスとして扱った方がよくね?という流れ。
要するに、FormView, GridViewのモード切り替えって使えねぇなという(ry
31:nobodyさん
09/09/08 14:25:57
>>27,30
プログラミングASP.NET 3.5によると、
編集と挿入が要件の異なる別個の処理であることを理解してください
らしいので、そもそもその二つを共通化しようとする方向が間違ってるらしいぞ
だからと言って登録専用FormView、修正専用FormViewを作るのはやり過ぎな気がするが
表示用FormViewあったら、1ページにFormView合計三つ定義することになるんだよな?
32:nobodyさん
09/09/08 15:54:59
結局、自分でTextBoxなりCheckBoxなりをポトペタして
登録、修正画面を作ったほうが楽ってことだな
DBへの登録、修正の画面パターンなんて数パターンしかないだろうから、
一度作ればひな形ができて、あとは使いまわすだけじゃん
なんでFormViewとかGridViewとか、使い回しの悪いものを使うのかわからん
33:nobodyさん
09/09/08 20:30:40
>>32
一覧表示から修正画面に移る時には、
コントロール一つずつに対して値の設定をしていけとな。
34:nobodyさん
09/09/08 20:48:57
1ページにFormViewを3つ定義するなら、そのほうがよほど楽だな
しかもFormViewという足枷が外れる
作成する便宜に捕らわれすぎて、本来何のために開発してるのか
見失ってるんじゃないか?
35:nobodyさん
09/09/08 21:11:53
>>32
FormViewはDynamicControlが使えるからじゃまいか。
本来の使い方をすれば、一々入力フォームの形式を考えずに済むぞ。
36:23
09/09/08 22:04:35
>>28
CompositeDataBoundControl 実装するの? すげーや。
>>29
自動化は賛成だが、動きは理解しとかないとまずいだろ。
>>30
登録と修正は単一の FormView で ChangeMode するだけだと思うが。
>>31
登録も修正もレイアウトと入力チェックは似たようなもんだろ? そこを共通
化したいんだよ。実際の更新作業はデータソースがやるからまた別の話。
>>32
ASP.NET と ADO.NET っていう道具立てで FormView を回避するほうが
わからんよ。
>>34
FormView が足枷なわけないだろ。開発者を助けてくれるのに。
>>35
DynamicData って Oracle でも使えたっけ? 一応、Oracle と SQLServer の
両方に対応せよということなので、使ってなかったが。
37:23
09/09/08 23:06:13
どうも話がかみ合わないので、最後の悪足掻きをしてみる。
FormView を使う時には、以下のようにカスタムコントロールを使うのが
理想的ではないか、というのが現時点での俺論。カスタムコントロールには
編集に必要な全てのコントロールやバリデータが含まれているから、わざわざ
FindControl せずに済むというメリットもある。テンプレートを使いながら
タイプセーフを実現できるわけで、この利点は捨てがたい。
FormView
|
+- DataSource -> データオブジェクト(Select/Insert/Update/Delete)
|
+- InsertItemTemplate -> カスタムコントロール(mode=Insert)
|
+- EditItemTemplate -> カスタムコントロール(mode=Update)
当然ながら、Select の引数には GridView の SelectedValue をバインドして
一覧と同期させている。
しかし、このカスタムコントロールの実装は Joe Coder には敷居が高いのでは
ないか。デザイナで aspx をいじれば済むという手軽さを失うわけだから。
標準化とあわせて、このあたりの折り合いをどうつけているのか、うまい落し
どころはないか、というところが知りたいのっす。
38:nobodyさん
09/09/08 23:27:54
>>36
>FormView が足枷なわけないだろ。開発者を助けてくれるのに。
足枷だろ?FormViewで実現できない仕様を渡されたら嫌な顔するだろ?w
つーか、要求定義の段階でユーザからの要望をはねつけてるだろw
ASP.NETの使用上できませんとかいって。本末転倒。
39:nobodyさん
09/09/08 23:31:48
>>37
そんな面倒なとこするなら、初めからポトペタで済ませたほうがよっぽど楽だろ
InsertもUpdateもほぼ同じロジックで流用できる。
新規か編集か、つまりIDがあるかないかで、InsertするかUpdateするかを分けるだけだ。
バリデーションもすべて共有できるし、編集されたくないコントロールはReadOnlyにするだけ。
大したコスト削減にもならんのにFormViewに固執する理由がわからん。
40:23
09/09/09 00:24:25
>>38
ASP.NET でやりやすいように設計するだけの話。それ以上でも以下でもない。
>>39
FormView を使わなかったらデータ項目とコントロールのやり取りを全部手で
書く必要があるし、SQL も泥臭く書くことになるんじゃないの? 俺にとっては
そっちのほうが面倒なんだけどな。
41:nobodyさん
09/09/09 03:21:58
>>40
(SQL)データソースの更新機能だけでDB更新が事足りる
再利用しないカスタムコントロール作るのを余計な作業と思わない
(結果として)同じ処理をするコードは極力一つにまとめないと気が済まない
まあ、こんな感じだな
俺には一つも当てはまらねぇw
いまだ1.1の修正させられる俺に言わせれば、RepeaterでOK
それ以外は使いたければ使えば、って感じ
42:nobodyさん
09/09/09 07:28:11
>>40
>ASP.NET でやりやすいように設計するだけの話。それ以上でも以下でもない。
つまり顧客の要望であってもASP.NETでやりにくければ、そういう設計にはしないってことだな。
んー、自社向けなら許されるけど、納品する立場ならこんな発言許されないだろ。
プログラマ(というか設計者)として失格だと思うぞ。
>FormView を使わなかったらデータ項目とコントロールのやり取りを全部手で
>書く必要があるし、SQL も泥臭く書くことになるんじゃないの?
それのどこが問題なの?
求められる要求に対して、これらのコントロールが活用できるならすればいい。
しかし、そのコントロールを使わないと面倒で泥臭くて嫌と考えたり、
ましてASP.NETでやりやすいように設計するなんてのは本末転倒。
それに、ASP.NETが開発効率を上げるための仕組みだ。
結果、副次的にコードの記述が少なくなるところまでは理解できるが、
だからそういったコントロールを使わなきゃいけないと思うのは完全に間違いだろ。
あくまで利用できるところにのみ利用し、難しいところは基本的なコントロールで代替する。
ASP.NETは、基本的なコントロールを利用するだけでも開発効率は十分に高い。
>俺にとってはそっちのほうが面倒なんだけどな。
俺が思うプログラマが決して言ってはいけない言葉。それは「面倒」。
43:35
09/09/09 07:45:19
>>36
うちはMSSQLだわ。
DBMSからメタデータが抽出出来るなら動くと思うが、ムリぽいな。
44:35
09/09/09 07:52:48
>>42
すれ違いになるが、その「面倒」はこの先納品した客も被る訳だ。面倒を顧客の要望だからと言ってただ言いなりに実装するのは、自分にも顧客にも良い結果にはならない。
まあこういうフレームワークは日本の箱庭的システムにはそぐわないかもね。
45:23
09/09/09 08:04:03
>>41
俺のところだと SQL 手書きが発生するのは全体の 2 割以下だな。それもこれも最新の
ASP.NET が使えるおかげ。
>>42
わかった。お互い別の道を歩もう。
46:nobodyさん
09/09/09 08:57:27
なんか、手段と目的が逆転してる人がいるよね。
47:nobodyさん
09/09/10 09:08:58
ASP.NET(Frameworkは2.0)でWEBサイト開発して配置用にインストーラーを作った。
インストール先のサーバーにはFrameworkが1.1と2.0が入ってて、規定のサイトのASP.NETは1.1に設定されている。
この場合配置されたサイトは1.1で動作するようになってしまうんだが、インストーラー側で2.0に切りかえれないものだろうか?
配置後に手動で切り替えれば済むことなんだけど、なんとかならないかな。
web.configのsupportedRuntime要素を設定してもダメみたいだし。
48:nobodyさん
09/09/11 03:46:12
>>44
FormViewを使わないことで面倒なら、もう何もしないほうがいいな
49:nobodyさん
09/09/11 03:52:35
つーか、その面倒解消のためFormViewを導入しようとして逆に効率落ちてるじゃん
本末転倒
50:nobodyさん
09/09/11 08:22:52
つか正直ASP.NETって帯に短し襷に長しだよな
51:nobodyさん
09/09/11 16:36:40
>>50
その評価はまちがってる
ASP.NETが中途半端なんじゃなくて、用意されてるコントロールが中途半端なんだよ
52:nobodyさん
09/09/11 18:15:27
>>51
中途半端じゃないとコンポーネント屋が困るからな
53:nobodyさん
09/09/11 19:07:44
コントロールは、基礎的なものさえあればいいんじゃないのかな。
応用的なの作っても、結局特定の用途向けみたいな感じで、
万人向けじゃなくなっちゃうし、
かといってカスタマイズがこんだけできるんですって作ると、
今度は複雑になって逆に万人向きじゃなくなる感じがする。
今までで困ったのは帳票ぐらいかな。
こればかりは買ったぞ。数十万とかで。
あとはrepeaterさえ攻略すればなんとかなる感じ。
ところでformviewが話題になってるけど、
外部制約とかの整合性制約がある場合も対応できるの?
商品名を選択させてIDを入れるとか、
重複しない商品コードを入力させるとか。
試そう試そうと思っているうちにそのままなんだ。
54:nobodyさん
09/09/12 13:14:52
俺、コントロールをポトペタする派なんだけど、
登録フォームをどうやってFormViewで作るの?
何かしらバインドしないとFormViewって表示されないよね?
55:nobodyさん
09/09/12 17:18:05
よーし、ちょっとテストしてみようかな
56:nobodyさん
09/09/12 23:04:00
formviewやってみたけど、うまくカスタマイズできなくてわけがわからない(´・ω・`)ショボーン
わからないのは、いまのところ4つ
・ParentTable→ParentID ParentCode ChildID
・ChildTable→ChildID ChildCode
があって、ParentTable.ChildIDはChildTableのChildIDと同じで、
FormViewでChildCodeを入力することによってParentTableのフィールドを更新なり挿入なりしようとしている場合。
1)
テーブルがこんな感じで、ParentTableにChildTableの主キー(ChildID)を保持してる場合、
FormViewのChildIDをChildCodeに置換してlistboxなどで表示する方法ってある?
2)
同時実行制御はデータソースでのデータバインド時にParentTableの実行制御はできると
思うんだけど、ChildTableが変更された場合にも同時実行制御の対応できる?
(入力中にChildTableが編集される可能性を排除するため)
3)
2)と近いけど、ボタンをクリックしてから、実際に保存するまで、
ParentTableとChildTableのトランザクションはどうやって管理すればいい?
(同時実行制御で確認してから、実際に書き換えするまでのトランザクション管理)
4)
ChildTableの行数が増えると、ChildCodeを何かしらの手がかりに検索して
入力(表示)させる必要があると思うんだけど、FormView内にコントロールがあって、
それを選択可能?
うーむネットでも情報が少ないし疲れたよママン
57:nobodyさん
09/09/12 23:54:01
子が親のIDもってるんじゃなくて、親が子のIDもってるのか?
それだと親と子は1:1にしかならないような
1)
置換するの意味がわからん
普通に結合するなりなんなりでChildCodeの項目も用意するだけでは?
2)
実行制御って具体的に何のこと?
DBへの排他制御なら、基本的に楽観的ロックなのでDBへのロックはなしだろ
4)
子テーブルの行数増えても親テーブルにもってるIDで見るだけじゃないのか?
お前の考えてる入力イメージがまったくわからんぞ
58:nobodyさん
09/09/13 00:13:12
>>57
例えばparent=受注テーブル、child=商品テーブルみたいな感じ
parent:Childは1:n
1)
>置換するの意味がわからん
childテーブルの商品idを、商品コードに置換をするってこと。
表示時はそれでいいけど、
更新時には商品コードを商品id(childID)に置換をする必要があるでしょ?
2)
>実行制御って具体的に何のこと?
商品コードをlistBoxで選択をさせる場合、人間が商品コードを選択し、
それと対になる商品id(childID)をpostBackで受けることになると思うのけど、
その間にマスタが変更されてしまった場合、
childIDとcodeが一致しない可能性が発生しない?
3)
>DBへの排他制御なら、基本的に楽観的ロックなのでDBへのロックはなしだろ
楽観的ロックでchildTableのdateTime値から変更が無いことを確認しても
それを確認してから、実際に、parentTableを更新する間に編集されちゃうかもしれんから、
トランザクションで管理をしたくならないかなと思って。
4)
>子テーブルの行数増えても親テーブルにもってるIDで見るだけじゃないのか?
商品コードを、listBoxに入れて選択をさせることはできるかもしんないけど、
商品をたくさんの条件から検索して、それをformView上のlistBoxなり、
textBoxなりに商品コードとして入力したいこととかない?と思って。
そんでその方法がよくわからんと。
59:nobodyさん
09/09/13 00:45:56
なんか楽しそうだな。俺も後で参加しよう。
60:59
09/09/13 02:44:02
何回読んでもいまいち意味が分からん。
61:nobodyさん
09/09/13 02:59:49
>>60
具体的に書けばいいのかなw
1)
textBoxに商品コードを入力させ、
その商品コードから商品テーブルの商品idを取得して、
商品idを受注テーブルに挿入することはformViewでできる?
2)
1)と似たような感じで、
商品コードをlistBoxから一覧で入力させるとき、
受注テーブルは楽観的ロックでいいけど、
商品テーブルは商品コードを入力中に、
裏で誰かが商品マスタを編集して商品コードを変更させてしまっても
楽観的ロックで排除してくれる?
3)
2)で楽観的ロックで確かめられないとしたら、
商品テーブルから商品コードと商品idが一致するのか確かめなくちゃだけど、
商品テーブルの商品コードの存在を確かめる→受注テーブルに挿入するの間に
商品コードが編集される可能性があるから、トランザクションで管理できる?
4)
textBoxに商品コードを入力させるとき
他のウィンドウや他のformから商品コードを検索して
formView上のtextBoxに入力させることはできる?
こんな感じなんだぜ。うぇーはっはっは
62:nobodyさん
09/09/13 05:09:22
>>61
とりあえずFormViewの仕事とDataSourceの仕事を区別しよう
FormViewで出来るかと言われれば、全部出来る
コードレスで出来るかというなら、FormView周りにかぎれば、
条件つきでたぶん出来る(4以外)
お前が望むような動作をするDataSourceがあれば、って条件だがな
63:59
09/09/13 08:56:53
1)
できる。FormView関係ない。
2), 3)
個人的にコードレスではできないと認識している。
(2.0しか知らないから、今はどうなのか知らん)
4)
できる。FormView関係ない。
寝る。途中で飽きた。
URLリンク(www1.axfc.net)
64:nobodyさん
09/09/13 17:58:37
さんくす
FormView(+ObjectDataSource)は使うけど、
結局、相当に長くコードを書くのが必要なんだな。
コードみて大まかなやり方がわかったよ。ありがとう。
クエリを書くのが2割になったというので興味があったんだけど、
テーブルってほとんど他とリレーションしてるから、
結局は更新時にチェックをしなくちゃいけないよね。
そうすると何かしらのクエリの記述が必要になりそうだね。
既存のプロジェクトを調べたら、子テーブルのIDを持ってないテーブルって、
都道府県マスタとか、商品種別のマスタとか、一部のマスタぐらいしかなかった。
だから2割になるというより、最大で2割ぐらい減るのかなという印象。
これなら、無理してformView使うよりも
コントロールのポトペタのほうが、制限が少なくていいかなぁと思ったんだけど、
どうなんだろう。もちろん自分の場合の話だが。
ところで、文章から、2)と3)なんかを
FormViewで実装した経験がないように見受けられるけど、
そんなチェックはしないことが多いのかな?
整合性で問題がでるパターンが想像できると思うのだけど。
それとも、子テーブルのIDを持つようなテーブルを
更新したり、挿入したりすることがあまりないような
シンプルなサイトの開発が多いのかな?
ちょっと気になったもので。
65:nobodyさん
09/09/13 18:44:22
親が子のIDをもつ親子関係ってのが理解できん
それで親と子が1:nになるんだよな?
通常の業務で入力するような範囲で、マスタの変更チェックなんてしないとおもうが
おまえのとこはそんなに頻繁にマスタが変更されるのか?
66:nobodyさん
09/09/13 21:14:34
>>65
第一に、前者と後者は関連性はないよね。
n:nでも、n:1でもチェックが必要なのは同じことだから。確認のため。
1:nの関係はよくあると思うよ
商品->商品種別、会社->都道府県、支社->社員、会社->担当、受注->明細とか
親->子の例は、
そんな確認ができるのかなという疑問に思っただけなのと、
他のテーブルの主キーを持っていないテーブルが、
マスタ関連だけだったというだけなんで、
常にマスタのチェックをしなきゃいけないということを、
言いたかったわけじゃないんだ。ごめんよ。
でも、自由入力させる場合の商品コードは、
その存在チェックと主キーへの変換は必要だよね?
入荷した商品の、在庫の引き当て数量チェックとかも。
似た動作をいろいろ見ると、いろんな確認が必要で、
他のテーブルの確認をせずに、
無条件で更新できるような入力箇所って
思うより少ないのねって思ったの。んでもって、やっぱり手書きなんだなと。
掲示板とか、ゲストブック的な、
他のテーブルを意識しなくても済む単純な入力や編集には
便利だと思うんだけど
67:59
09/09/13 21:35:45
一応言っておくけど、俺はコントロールポトペタ派。
>そんなチェックはしないことが多いのかな?
登録対象商品がまだ有効かどうかのチェックはする。よくする。
ただし、普通、マスタの更新(UPDATE)なんてしない。ありえない。
やるなら削除後に新規登録、または新規登録のみ。
そうすれば登録対象が急に別物にすりかわるなんてことはなくなる。
1:nの関係はもちろんよくあるが、親が子のIDを持つことはありえないと思うんだが。
支社テーブルは社員IDを全部持ってるの?各社員(子)が支社コードもってればよくない?
68:65
09/09/13 22:27:45
>>66
1:nの関係はよくあるが、親が子のIDもった状態でどうやって
親:子が1:nの関係を作れるんだ?
その親に対する子はその親がもってるIDの子1件だけだろ
まさか同一IDの子が複数いるとか言わないだろうな
後半に関しては、個人的意見だがIDとコードを両方持つ設計は少ないと思うぞ
データとしては入力されるコードを格納すればいいんだし
コードとID別持ちで、コードからID引いて格納するって設計がまあ特殊なんだと
在庫引当の例とかは、ビジネスロジックとしてのチェックの問題だ
ビジネスロジックをコードレスなんてもともと無理だと思うがな
それは更新の問題じゃなくて入力内容チェックの問題
FormViewだろうがなんだろうが画面を表示する機能に直接関係ない
69:nobodyさん
09/09/14 05:04:37
>>67
>登録対象商品がまだ有効かどうかのチェックはする。よくする。
するよね?
するってーと、ObjectDataSourceなんかでチェックして、
だめなら、だめの返値返して、エラー表示する処理とかになるよね。
>1:nの関係はもちろんよくあるが、親が子のIDを持つことはありえないと思うんだが。
>支社テーブルは社員IDを全部持ってるの?各社員(子)が支社コードもってればよくない?
ごめん。急いで書いたので、一部、不適切な関係があるね。
というか、自分が、どうやら、親と子を逆に捉えてるのかな。
他のテーブルの主キーを持ってる方を親だと、ずっと思ってたよww
商品マスタ->商品区分マスタ、取引先->都道府県マスタ、社員マスタ->支社マスタとか。
70:nobodyさん
09/09/14 05:11:29
>>68
>親:子が1:nの関係を作れるんだ?
上でも書いたけど、どうやら俺が逆に書いてるようだw許してくれ(´;ω;`)ウッ…
でも、在庫引き当て時とかのチェックは1:1でも1:nで・・も(ry
>後半に関しては、個人的意見だがIDとコードを両方持つ設計は少ないと思うぞ
どっちにしろ、コードの存在確認はしなきゃなんないでしょ?
編集されたかの楽観的ロックじゃなく、
存在しないコードを入力させない存在チェックとして。
>FormViewだろうがなんだろうが画面を表示する機能に直接関係ない
というかね
>45 名前: 23 [sage] 投稿日: 2009/09/09(水) 08:04:03 ID:???
>俺のところだと SQL 手書きが発生するのは全体の 2 割以下だな。それもこれも最新の
>ASP.NET が使えるおかげ。
から、formView+dataSourceでクエリの手書きが2割以下になると思ったのよ。
そのぐらいすごいんだと。
ほんとは、調べるとそうでもなくて、
過去の経験からは、ほとんどチェックが必要だったりして、
ObjectDataSourceでコード書かないといけないので、
自作のクラスで処理するのと、あんま差はないなと思ったということ。
で、dataSourceを利用しないで、formViewを使うメリットってなに?
という話になるとおもうんだけど、
上のサンプルみると、各コントロールのインスタンスからデータを取得してるから、
ポトペタするのと変わらないようにみえる。
フィールド値のバインドを自動的にやってくれるぐらい?
という感じがしてるんだけど、という感じ。
うーん、なんかいまいちよくわかんないな・・
71:65
09/09/14 10:05:53
入力チェックは確かに必要だが、それは画面表示の機能(=FormView)の範疇でも
DB更新の機能(=DataSource)の範疇でもない(入力チェックをObjectDataSourceでやるのは
俺は間違ってると思う。DataSouceのもとになってるクラスでチェックするべきだと)
で、SQLの手書きが2割以下ってのは、俺は言いすぎだとは思う
ただ、純粋にSQLを書くという作業に限ってみれば、SQL書くところすべてに
SQLDataSourceつかえば、確かに自分でSQL書くことは少ないとはおもうが
それはアクセスでクエリビルダ使ったらSQL手書きしなくていいです、ってレベルと同じ話
必要なSQL文の数が減るわけじゃなくて、それを書く作業が減るだけ
DataSource使わないFormViewのメリットなんてないと思う。というか
FromViewはDataSource前提に設計されたコントロールだと思うが
DataSourceつかうことにメリットがあるんじゃなくて、使わないことにデメリットがある
72:nobodyさん
09/09/14 19:50:49
>>71
DataSourceの元になるクラスという?
こういった場合にはObjectDataSourceでSELECT、INSERTなどのクエリを生成して、
コントロールにバインドするんじゃないの?
73:nobodyさん
09/09/14 19:52:33
DataSourceの元になるクラスという?
↓
DataSourceの元になるクラスというと?
74:23
09/09/14 21:41:06
>>71
入力チェックは aspx.cs の仕事だと思うがなぁ。SQL 手書き 2 割以下というのは
ObjectDataSource で TableAdapter を使うパターンが 8 割を占める、という意味。
たとえ複数テーブルの更新が発生したとしても、内部的には TableAdapter を使い
回す。手書きが必要なのはバッチ処理ぐらい。まあ、プロジェクトにもよるがうちは
テーブル数と画面数が大体 200 ぐらいだな。コードマスタが 50 以上あったはず。
75:nobodyさん
09/09/14 23:51:43
んー、確かにTableAdapterでいける部分は使うべきかな…。
うちは今一切使わない方針だけど。
なんかたまにASP.NET本来の原初的な組み方をしなきゃならないって考える波がくる。
で、MS本読み直すと「あー間違ってたのかな」と思ったり。
「Javaから来たヤツは全てを自前クラスで用意しようとする。
そうする利点は認めるがASP.NETでは…」みたいな論調だし。
で、軽く組み直してみたら、やっぱりハマるんだけどw
76:nobodyさん
09/09/15 00:04:23
Dataの引っ張り方は人それぞれだから別とすると、
それならDataSourceと切り離してFormViewだけのメリットって何?
って話だな?
これとは別にTableAdapterを使うのはいいけど、データのソートとか抽出とかはどうしてる?
クエリかかないならTableAdapter.Fill(DataTable)して、DataTable.Select("")してるってこと?
これだとSQLからデータ抽出して、メモリに蓄えて、そこからまたSelectして
無駄が多いような気がするんだが。
77:nobodyさん
09/09/15 02:15:05
結局のとこ、SQLを手書きする量が減るだけで、SQLの量そのものが減るわけじゃないってことだな
SQL書く作業がTableAdapter定義する作業になっただけ
昔のADO.NETでは、DataAdapterでのUPDATEは使えねえってのが定説だった気がするが
TableAdapterになって使いものになるようになったのかな?
78:nobodyさん
09/09/15 03:43:03
ただ全部の項目を埋めて、挿入、更新するだけなら結構使える
複雑なことしようとすると、TableAdapter用のクエリの手書き必須
挿入時に論理削除を意味するIsDeleteをいじられたくないのでfalseで固定したいとか
サブクエリで抽出した内容を取得して挿入したいとか。
挿入したときの主キーを取得するのも手書きが必要だったような。
あと上にもあるけど動的にクエリを発行できないので
検索条件に従ってWhere句を作成するとかは無理だったはず。
かといってDataTableのSelectメソッドをWhere句の動的生成の
変わりに利用すると、いちど全部のデータを取得するので、
行数が多いとデータの取得に時間がかかる。
そのたありがLinqToSQLやEntityFrameworkで解決してると思うんだけど、
LinqToSQLは終了の方向だし、EFもなんとかしてくれって言う人が多くて、
まだ微妙なところ。
79:23
09/09/15 07:39:06
>>76
うちでは Excel の仕様書から TableAdapter を自動生成していて、SelectList メソッド
にソート引数も指定できるようにしてるよ。内部的には ORDER BY に変換する。
>>77
やっかいなのは、SELECT するのは VIEW だけど更新もしたいケース。そんな時は
Update メソッドの中で、個々の TableAdapter を使い回す。それで対応できなければ
SQL 手書き。
>>78
WHERE の動的作成は頻出パターンなので、TableAdapter の自動生成時に作り込んで
いる。つまり、検索条件を引数にもらう SelectList メソッドの中で、引数が null じゃ
なければ WHERE に追加している。こうすると、画面側では検索条件をバインドする
だけで済む。
80:nobodyさん
09/09/15 17:37:59
>>79
>TableAdapter を自動生成していて
>WHERE の動的作成は頻出パターンなので、TableAdapter の自動生成時に作り込んで
それでSQL手書きが2割以下になるのか。それなら納得
しかし、自動生成されたSQLを使うのはどうもあまり乗り気になれん
TableAdapterにしてもDataSourceにしても、SQLは完全にラップされて
アプリ側から見えなくしてるわけだし、その方向が正しいのはわかるんだけど
アプリ側でSQLもシームレスに使いたいっていうと、LINQな方向に行くのかねぇ
でもあれもSQLがそのまま通るわけじゃないしなぁ
81:nobodyさん
09/09/15 19:25:00
>>79
>TableAdapter の自動生成時に作り込んでいる。
>つまり、検索条件を引数にもらう SelectList メソッドの中で、
>引数が null じゃなければ WHERE に追加している。
これどうやるの?
TableAdapterで、条件に従ってWHEREを追加とかできたっけ?
82:nobodyさん
09/09/15 23:02:34
Yのつくとこがすきそうな手法だな・・
83:nobodyさん
09/09/15 23:29:57
自動生成時に作り込む=クエリビルダでクエリを作る=細かいところは手書きでクエリ修正
とかじゃないだろうなw
84:23
09/09/15 23:52:09
>>81
Excel マクロでコード生成するんだからパターンさえ決まれば何でもできる。
Fill 系のメソッドで引数チェックして WHERE を組み立てるなんざどこでも
やってることでしょ。
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が固定じゃないのでべた書きすることが
出来ません。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4952日前に更新/322 KB
担当:undef