1 名前:nobodyさん mailto:sage [2009/09/01(火) 20:06:04 ID:???] ASP.NETとは、マイクロソフトが提供するWeb アプリケーションと XML Web サービスを構築するための Microsoft .NET Frameworkの一連のテクノロジの一つです。 技術の移り変わりの早い分野ですので、みんなで質問、相談しつつ、より理解を深めていきましょう。 ●ASP.NET関連サイト マイクロソフトASP.NETデベロッパーセンター msdn.microsoft.com/ja-jp/asp.net/default.aspx ASP.NETオフィシャル(英語) www.asp.net/ VisualStudioホームページ www.microsoft.com/japan/msdn/vstudio/ SQLServerホーム www.microsoft.com/japan/sqlserver/2005/default.mspx IISオフィシャル(英語) www.iis.net/ ASP.NETにAJAX技術を取り入れるASP>NET AJAX(英語) www.asp.net/ajax/ ASP.NETにMVCアーキテクチャを取り入れるASP.NET MVC(英語) www.asp.net/mvc/ ASP.NETでのお役立ちの定番サイト www.atmarkit.co.jp/channel/aspnet/aspnet.html ●前スレ 【質問】ASP.NETスレ Part5【議論】 pc11.2ch.net/test/read.cgi/php/1232671611/
376 名前:nobodyさん mailto:sage [2009/10/27(火) 01:37:47 ID:???] >>375 aspxファイルにコードを書けばよいじゃない、という発想。
377 名前:nobodyさん [2009/10/27(火) 02:04:17 ID:JPv1u5Ye] >>375 意味不明ですみません。「タグでコントロールを作成」というのはButton btn = new Button() と書くのではなくて<asp:Button runat='server'/>とaspタグを使うことを意味していました。 以下のような構造の時に動的に作成されるDropDownListにユニークなIDを割り当てたいのです。 これは後からDropDownListに追加するListItemを制御したり、DropDownListの初期値を制御 したいためです。 <% for (int i=0; i<Hoge1.Count; i++) %> <% { %> 複雑な構造のHTML(1) <% for (int j=0; j<Hoge2.Count; j++) %> <% { %> 複雑な構造のHTML(2) <asp:DropDownList ID="???" runat="server" /> 複雑な構造のHTML(3) <% } %> 複雑な構造のHTML(4) <% } %> このようなケースでは一般的にどのようにすべきなのでしょうか? ID="ddl<%# Eval(i * Hoge1.Count + j)%>"のような表記が可能なのかと推測したのですが当然 ダメでした…。
378 名前:nobodyさん mailto:sage [2009/10/27(火) 06:04:38 ID:???] よく認証画面などで見かける、数字の画像をランダムに 生成する機能は、何を使えば実現できますか? フリーウェアでそういった機能のはありますか?
379 名前:nobodyさん mailto:sage [2009/10/27(火) 08:21:03 ID:???] >>377 そもそもの作りが糞。 一般的にはRepeaterやListView等のコントロールのTemplateを使用します。 10年位前の無印ASPなやり方な上に わざわざサーバーコントロールを使うことで縛りを設けているマゾ仕様。 とりあえずID云々の前に各コントロールへの参照が取れないんだから、 一般的な解決策はほぼ絶望じゃないかな。 >>378 Captchaじゃなかったっけ?
380 名前:nobodyさん [2009/10/27(火) 08:42:02 ID:JPv1u5Ye] >>379 ご回答ありがとうございます。了解しました。IDについてはあきらめようと思います。 それにRepeaterやTemplate等の代替え手段を教えていただいたのは非常に助かります。 これから勉強してみて書き換えたいと思います。ありがとうございました。
381 名前:nobodyさん mailto:sage [2009/10/27(火) 08:47:17 ID:???] >>377 それでも出来たと思うよ。 <%#(i * hoge1.coint + j).ToString() %> とか文字列にする必要があったような。ひょっとしたら#いらないかも。 ただ、ASP.NETはそんなやり方はしないので、 「ASP.NET コントロール 動的生成」あたりでググって調べてみるといいと思う。 たぶんaspxファイルにはPanelやPlaceHolderなどのコントロールだけ配置して コードビハインドのメソッド内でfor文でコントロールのインスタンスを動的に生成して、 Panelに生成したコントロールをaddしていく形になると思う。
382 名前:nobodyさん mailto:sage [2009/10/27(火) 08:54:35 ID:???] あれ<%$ %>だっけか? 実行時バインドなんてほとんど使わないから忘れた。 出先なので自分のソースも調べらんないし、そのへん調べてみて。
383 名前:nobodyさん [2009/10/27(火) 09:06:08 ID:JPv1u5Ye] >>381 具体的なやり方まで教えていただきありがとうございます。作りは悪いのはわかっていても 応急手段でIDの取得ができると本当に助かるのです。今は試せる環境にいないのですが、午 後からでもトライしてみます! それでもいつかはやはり作り直しが必要だということは認識できました。
384 名前:382 mailto:sage [2009/10/27(火) 11:40:35 ID:???] もどってきたのでテストしてみるよ 飯食ってからだけど
385 名前:nobodyさん mailto:sage [2009/10/27(火) 11:46:11 ID:???] 上下にページャーを表示したgridviewで、 上のページャーとヘッダの境界の色を変更したいのですがうまくいきません。 どのbordercolorを変更すれば良いのでしょうか?
386 名前:nobodyさん mailto:sage [2009/10/27(火) 12:48:40 ID:???] >>383 あれごめん。 今試した範囲だとIDはやっぱり実行時バインドで設定できないみたいだ。 自分の勘違いだったっぽい。 >>385 GridViewのヘッダを表示してる<tr>要素に対してと、Pagerを表示している<tr>要素にしか スタイルシートを設定できないので、その範囲で設定するしかないんじゃないかな。 ただPagerにスタイルシート適用すると上下両方とも反映されてしまうので、 上下対称に設定したいのなら、ヘッダの上のラインとフッタの下のラインに対して スタイルシートを適用すると擬似的に境界の色は変えられると思う。
387 名前:385 mailto:sage [2009/10/27(火) 13:43:44 ID:???] >>386 …よく分かりません 現状はこんな感じなんですが… www.dotup.org/uploda/www.dotup.org308580.jpg <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" style = "text-align:center" HorizontalAlign="Left" AllowPaging="True" BorderColor="Black" AllowSorting="True" Font-Size="Small" PageSize="15" > (ry) <Columns > <asp:TemplateField HeaderText="flag"> <asp:BoundField DataField="hinban" HeaderText="品番" SortExpression="hinban" > <HeaderStyle BorderColor="Black" /> <ItemStyle BorderColor="Black" /> </asp:BoundField>
388 名前: [―{}@{}@{}-] nobodyさん mailto:sage [2009/10/27(火) 14:04:25 ID:???] >>387 GridView.PagerStyleプロパティで変更出来るんじゃね
389 名前:nobodyさん mailto:sage [2009/10/27(火) 14:29:34 ID:???] >>388 PagerStyleでやると、上下に配置したのにラインがでちゃう。つまり PagerStyle <LINE1> Grid <LINE2> PagerStyle <LINE3> PageStyleで下線を付けて<LINE1>を書こうとすると、<LINE3>にも予期しない下線が書かれちゃう。 本当はGridとの境の<LINE2>に線を引きたいはずの場合が多いのに。 >>387 ちょっと試してみるよ
390 名前:nobodyさん mailto:sage [2009/10/27(火) 14:40:57 ID:???] 例えば<tr>に対してこんなふうにスタイルシートを設定して、 <style type="text/css"> <!-- tr.test { border-top-color:#00CC00;border-style:Solid; } --> </style> HeaderStyleのCssClassに対してtestを設定するとか。 そうすると境界線のラインだけ色を変更するなり、太さを変更するなりできる。 根本的に別のラインを作りたいとかだと、自分でテンプレートをいじるなりしないといけないと思う。
391 名前:nobodyさん mailto:sage [2009/10/27(火) 15:17:58 ID:???] >>386 わざわざ試していただきありがとうございます。こちらもできないことが確認できました。他の手段で頑張ります。
392 名前:nobodyさん mailto:sage [2009/10/27(火) 15:41:47 ID:???] 複雑な構造のhtmlが何かわからんけど、まぁ htmlと一緒に動的にコントロールを生成して貼り付けていくしかないと思うな このあたりが役立つんじゃないか? www.atmarkit.co.jp/fdotnet/index/bbs/dir173.html www.atmarkit.co.jp/fdotnet/index/bbs/dir175.html www.atmarkit.co.jp/fdotnet/index/bbs/dir51.html
393 名前:nobodyさん mailto:sage [2009/10/27(火) 16:45:14 ID:???] >>377 サーバコントロールじゃない普通のHTML要素なら、 id="ddl<% Response.Write(なんちゃら)%>"でできる id="ddl<%= なんちゃら %>でも上と同じ意味 今どうなってるかわからんが、 サーバコントロールにする必要あるのか? あるいは、ほんとに個別のIDが必要なのか? 個別のID振ったとしても、ページでコントロール生成したら、 実際にインスタンスが生成されるのはHTMLのレンダリング時だから そのコントロールを操作するタイミングが無いぞ
394 名前:nobodyさん mailto:sage [2009/10/27(火) 21:17:37 ID:???] >>378 あれはCAPTCHAっていう。 フリーで使えるのはここ。 www.mondor.org/captcha.aspx
395 名前:nobodyさん mailto:sage [2009/10/27(火) 22:25:07 ID:???] それってひょっとして 文字列をランダムに生成→その文字をbitmapなりで画像にしてランダムに歪ませる→画像として表示 なんてことやってんのかな?
396 名前:nobodyさん mailto:sage [2009/10/27(火) 23:28:31 ID:???] はてな界隈のRubyでつくってみた()笑 とかならそうかもしれないけど、 スパムする方もCAPTCHA破りの画像認識ツールを使っているそうで、 それなりなアルゴリズムを要するんだってさ。 で、そのアルゴリズムが公開されたら、スパマーもそれに対抗して(ry
397 名前:nobodyさん mailto:sage [2009/10/27(火) 23:33:19 ID:???] >>379 >>394 ありがとうございます。あれはCAPTCHAっていうんですね。 自分のサイトで、スクリプトで大量アカウントを作成される可能性 を減らしたかったのです。 ちなみに、中国のサイトで、漢字(簡体字)版のCAPTCHAを見たことがあります。 ピンインがわからないと文字を入力できないというだけでもつらいのに、 文字が歪んでいるから、元の漢字すらわからない。 日本人の自分ですら入力できないのだから、非漢字言語圏の人 にはお手上げだろうなぁ。 漢字版は、国外からのアクセスを禁止したい場合にはいいかもw >>395 上のサイトみると、ノイズのレベルを調整したりフォントも変更できる ようで、歪み自体は完全ランダムではないみたい。(文字列は長さを 指定した上でのランダム文字列)
398 名前:nobodyさん mailto:sage [2009/10/27(火) 23:47:15 ID:???] NTTdocomoがhtmlに直書きでやらかしてたなw どうせデータの仕事だろうけどw
399 名前:nobodyさん mailto:sage [2009/10/28(水) 00:31:33 ID:???] 暗号化してポストバックするか、セッションで持つとか、そんな感じ? NTT-MEかもしれんぞ。 MEなら一度下請けしたことあるけど、うーん、・・・
400 名前:nobodyさん mailto:sage [2009/11/03(火) 14:22:11 ID:???] StringTemplateをWebサイトで使う方法はないのでしょうか。 Web アプリケーションでは使えるのですが。
401 名前:nobodyさん mailto:sage [2009/11/16(月) 13:33:42 ID:???] sessionにデータ突っ込むのってどの位のサイズまで許されるんかなぁ。 3MB位のオブジェクトを突っ込んでもいいんだろうか。 ちなみに同時アクセスは10人程度を想定。無論、InProcで動かしてる前提で。
402 名前:nobodyさん mailto:sage [2009/11/17(火) 14:55:18 ID:???] 適切に破棄されて、マシンスペックが問題なければ、好きなように使えばいいんでないの?
403 名前:sage mailto:sage [2009/11/18(水) 12:47:49 ID:???] >>402 全然理解して無い無能が無理して回答しなくて言いと思うんだ。 柔らかい言い方すると、馬鹿は黙ってすっこんでろ池沼。 >>401 100KB以下に抑えるべし。 じゃないとページ開く度に負荷がかかる。3MBとかならSession情報をDBに突っ込む事も 考えたほうがいい。
404 名前:nobodyさん mailto:sage [2009/11/18(水) 12:57:24 ID:???] そんな当たり前の回答は皆思いつくけど回答してないだけで、 動くか動かないかでいえば>>402 まちがっちゃいない。
405 名前:nobodyさん mailto:sage [2009/11/18(水) 13:16:28 ID:???] StateServer利用してDBに入れたらシリアル化させる必要があるから、 余計に負荷がかかるんじゃないか? InProcで問題ないなら、同時使用人数が10人で3Mぐらいなら、 今のサーバなら十分じゃね? やったことないから適当ぶっこいてるけど。
406 名前:nobodyさん mailto:sage [2009/11/18(水) 15:55:22 ID:???] >>403 の100KBって根拠は不明だな あとページの負荷って、セッションをDBにいれると、DBアクセスの オーバーヘッド分だけ負荷は増えるんだぜ >>402 はまったく間違えてはいないが、問題は適切な廃棄が難しい セッションの廃棄はほとんどタイムアウトでしか不可能だから 同時アクセス10人ってのが、同時リクエスト10人なら 1リクエスト1秒でも10分で6000アクセスだぜ これが全部別セッションで3M使ったらメモリ持たんわな セッションが一つなら、3Mだろうが10Mだろうが平気だがな 結局のとこ セッションサイズは小さければ小さいほどいい 実際の限界はマシンスペックと処理するリクエスト数による っていう、なんの参考にもならん回答に落ち着くわけですわ
407 名前:nobodyさん mailto:sage [2009/11/18(水) 16:11:18 ID:???] 一番理解していないのは>>403 でした。ちゃんちゃんってことでFA?
408 名前:nobodyさん mailto:sage [2009/11/18(水) 16:14:44 ID:???] 男は黙ってQueryString
409 名前:nobodyさん mailto:sage [2009/11/18(水) 17:20:35 ID:???] 赤間本には「1つの目安として、数100KBを超えるデータをSeesionオブジェクトに格納する場合には注意が必要」 と、ふわっと書いてあります。
410 名前:nobodyさん mailto:sage [2009/11/18(水) 17:45:05 ID:???] 俺の持ってるプログラマ読本には、 メモリ空間は16ビットなのでメモリの消費には絶えず気をつけろって書いてある
411 名前:nobodyさん mailto:sage [2009/11/18(水) 18:22:50 ID:???] >>409 その記述がどこにあるのか正確な所がわからんが、 数百キロで注意なら、百キロなら平気だと取れなくもない .NETエンタープライズWEBアプリケーション開発技術大全Vol.3では、 100K以下を指標としているが、その脚注に、「実際の上限はシステム構成によって変わるため 最終的にはパフォーマンステストを実施して決定することを推奨する」とある Iただし、この本ではInProcモードは推奨してない。そしてInProc以外ではセッションの シリアライズ等に要する時間が無視できないほど大きくなる、とある さらに、この本は.NET1.1時代の本だから、今の環境にそのままあてはまるとは言えない まあ、結局のとこテストして様子見てみろ、としか言えない ただ、InProcからそれ以外に変更すると、InProcでしか格納できないものを 格納してたりしてわけわからんバグのもとになったりするんだよなぁ なぜ>>401 はInProc前提なんだ?
412 名前:nobodyさん mailto:sage [2009/11/18(水) 18:35:31 ID:???] 同時アクセス10人が何を意味するかだよな 単純にユーザが10人で、だから同時アクセスの最大数も10とかなら、 全然問題ないんじゃないか? 結局、セッションが適切に破棄できて、サーバスペックが問題ないようなら、 使えばいいんでない?という>>402 の結論に帰結する。
413 名前:anonymous mailto:sage [2009/11/18(水) 18:59:05 ID:???] >>412 お前 >406 ちゃんと読んでる?
414 名前:nobodyさん mailto:sage [2009/11/18(水) 19:01:33 ID:???] というかInProcって、プロセス再起動とかで勝手に消えて困るやつじゃ。
415 名前:nobodyさん mailto:sage [2009/11/18(水) 19:08:49 ID:???] >>413 それも一つの解釈だろ?結論ではない。 何を言ってるんだ?
416 名前:nobodyさん mailto:sage [2009/11/19(木) 00:16:11 ID:???] 412 名前:nobodyさん[sage] 投稿日:2009/11/18(水) 18:35:31 ID:??? >>402 の結論に帰結する。 413 名前:anonymous[sage] 投稿日:2009/11/18(水) 18:59:05 ID:??? >>412 お前 >406 ちゃんと読んでる? 415 名前:nobodyさん[sage] 投稿日:2009/11/18(水) 19:08:49 ID:??? >>413 それも一つの解釈だろ?結論ではない。 412は結論といってる様だが?
417 名前:nobodyさん mailto:sage [2009/11/19(木) 11:47:40 ID:???] >>416 結論は両者ともマシンスペック次第って言ってるけど? なんでそんなに日本語理解能力が乏しいの?
418 名前:nobodyさん mailto:sage [2009/11/19(木) 12:14:08 ID:???] 必死ダナー
419 名前:nobodyさん mailto:sage [2009/11/19(木) 16:31:43 ID:???] すみません、どなたか教えて欲しいんですが、現在GligViewをつかって表を表示 させているんですが、現在はとりあえずMAX1000明細に制限して、もし制限を 超えるようなら「検索条件を変えてもっと明細を絞って下さい」みたいなメッセ ーじを出しているんですが、お客さんからの要望で抽出した明細をきちんと全部 みたいと言われていて、条件を指定しなかったら万単位の明細行数になるんでペ ージ切り替えでもいいですかって方向で持っていこうとしたらページ切り替えは 分かりにくいから駄目だといわれたんですが、GOOGLEマップみたいに画面 をスクロールさせるとちょっとづずデータを取ってくるような仕組みはASPで も可能なんでしょうか?
420 名前:nobodyさん mailto:sage [2009/11/19(木) 17:21:45 ID:???] menuItemをクリックされたらjavascript:_doPostBackが呼ばれるよりも前に自前の JavaScriptを実行したいんだけど可能? 要は「画面を移動します。よろしいですか?」みたいなダイアログを出したい。 ButtonならOnClientClick()で楽勝なんだけど。
421 名前:nobodyさん mailto:sage [2009/11/19(木) 18:17:59 ID:???] >>419 それAJAXで実際にやってみたけど、上のログにも感想あると思うけど、 AJAXで実装したら、サーバへのアクセス〜表示までのタイムラグがありすぎて実用的でなかった。 >>420 >>186 参照
422 名前:nobodyさん [2009/11/20(金) 00:30:35 ID:Fa9imoF+] 教えてください(o_"_)o Microsoft.Practices.EnterpriseLibrary.Loggingを使って テキストファイルにログを吐く場合に、文字コードを指定することは可能でしょうか?
423 名前:nobodyさん mailto:sage [2009/11/21(土) 14:35:48 ID:???] Message に入れる前に変換すればよかろ。
424 名前:nobodyさん [2009/11/23(月) 01:06:05 ID:4oP4nvDo] ハマってしまっているのでどなたか教えてください。 Public clsA As A = New A Public clsB As B = New B 上記記述にてクラスファイルを参照し、実行した際に下の行だけ 「見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。」 というエラーが出てしまいます。 原因はなんでしょうか?
425 名前:nobodyさん mailto:sage [2009/11/23(月) 03:31:17 ID:???] もうちょっと詳細を書け AとかBとかはどこで定義されているんだ
426 名前:nobodyさん mailto:sage [2009/11/23(月) 08:32:23 ID:???] 説明が不十分だったみたいですいません。 aspx.vb内の Partial Class ClassA Inherits System.Web.UI.Page Public clsA As A = New A Public clsB As B = New B こういった記述です。 AとBは別のクラスファイルにPublic Classとして宣言しています。 他に何か書かないといけない事あったら言ってください。
427 名前:nobodyさん mailto:sage [2009/11/23(月) 10:11:11 ID:???] まず開発環境かけ WEBアプリなのかWEBサイトなのか AとBは同じファイルに定義してあるのか? まあなんかテンポラリ削除したら直りそうな気もする
428 名前:nobodyさん mailto:sage [2009/11/23(月) 11:37:20 ID:???] 何度も申し訳ありません。 VisualStudio2005で作ったWEBアプリで、IIS上で動作させています。 .NETFrameworkは2.0です。 AとBは別ファイルです。 テンポラリはWeb.configの記述ですか?
429 名前:nobodyさん mailto:sage [2009/11/23(月) 18:04:25 ID:???] WEBアプリとWEBサイトの区別はついてるか? AとBの定義してあるファイルはどこにあるんだ? そのファイルは.dllなのか.vbなのか? テンポラリは標準ではたぶん c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files あたり。この中身ズバッと消して見れ
430 名前:nobodyさん mailto:sage [2009/11/25(水) 16:38:29 ID:???] .net 2003(asp.net)の datagridへのデータの表示方法なのですが、 コード 名称 数 金額 11 テレビ32 1 10000 12 テレビ42 3 60000 21 DVDレコーダ 1 10000 22 BDレコーダ 2 40000 のような売上データをDBから取ってきて、 コード 名称 数 金額 11 テレビ32 1 10000 12 テレビ42 3 60000 テレビ計 4 70000 21 DVDレコーダ 1 10000 22 BDレコーダ 2 40000 レコーダ計 3 50000 総計 7 120000 のように表示させるにはどうすればよろしいでしょうか。 「総計」に関しては、単純にフッターに表示出来ますが、 「テレビ計」のような中間計を表示させるうまい方法がわかりません。 テレビのコード帯は10〜19、レコーダのコード帯は20〜29です。 恐れ入りますが、教えて頂けますでしょうか。(参考URL等でも)
431 名前:nobodyさん mailto:sage [2009/11/25(水) 18:42:42 ID:???] 表示させるだけなら、SQLのCUBEとか、ROLLUPだっけ?を使えばできるんじゃね? 各明細の編集ボタンも表示させたいとかだと不自由かもしれないけど。 Repeaterでやれば各行を集計して、コード帯やらが変わるたびに集計行を表示とか いろいろできると思うけど。
432 名前:430 mailto:sage [2009/11/26(木) 02:15:49 ID:???] >>431 SQLで小計出力が出来ることを知りませんでした。 cube rollup 調べてみます。 (datatableをバインドする前に、 新たなdatatableを作って、コード帯が10〜19だったら、 それまでの合計を足して、NewRowに入れて、Addするみたいな イメージで組もうとしてました) ありがとうございます。
433 名前:nobodyさん mailto:sage [2009/11/26(木) 10:44:47 ID:???] ROLLUP!そういうのもあるのか
434 名前:nobodyさん mailto:sage [2009/11/27(金) 00:01:40 ID:???] FtpのWebClientとかあるけど、あれってクライアントPCからアップできる? 権限のからみでほとんど使えないだが…
435 名前:nobodyさん mailto:sage [2009/11/28(土) 08:10:59 ID:???] GridViewの「編集」ボタンで、データの[更新日時]にNow()関数で更新日時が自動で 入力される様にしたいのですが、色々調べてみたのですがわかりません。 どうすればよいのでしょうか?よろしくお願いします。 DB:MS Access、VWD2005、VB
436 名前:nobodyさん mailto:sage [2009/11/28(土) 09:38:53 ID:???] RowUpdatingイベントで放り込めば
437 名前:nobodyさん mailto:sage [2009/11/28(土) 13:32:50 ID:???] >>435 Now()が、DateTime.Now()かSQL文のNow()が不明だからなんとも。 単に編集ボタン押した時に、その日付を入れたいなら>>436 で。 ただ、実際の日付更新はUpdate文にNow()を記述して更新したほうが、 日付の更新し忘れがなくていいような気がする。仕様次第だけどさ。 GridViewにDataBindして編集したときって、 編集された内容をViewStateで保持し続けて、 Update後もUpdate前のデータを引きずるんだっけか? それでSQL文のNow()が反映されないという意味なら、 DataSetで更新後のデータを引っ張るようにSQL文を記述するしかないと思われる。 INSERT **** WHERE ID = @ID; SELECT *** WHERE ID = @IDみたいな INSERT ****;SELECT *** WHERE ID = SCOPE_IDENTITY();みたいな
438 名前:nobodyさん mailto:sage [2009/11/28(土) 13:34:04 ID:???] ×INSERT **** WHERE ID = @ID; SELECT *** WHERE ID = @IDみたいな ○UPDATE **** WHERE ID = @ID; SELECT *** WHERE ID = @IDみたいな
439 名前:nobodyさん mailto:sage [2009/11/28(土) 16:55:14 ID:???] >>437 ありがとうございます。 > ただ、実際の日付更新はUpdate文にNow()を記述して更新したほうが、 > 日付の更新し忘れがなくていいような気がする。仕様次第だけどさ。 この方法で行きたいです。 > GridViewにDataBindして編集したときって、 > 編集された内容をViewStateで保持し続けて、 > Update後もUpdate前のデータを引きずるんだっけか? > それでSQL文のNow()が反映されないという意味なら、 > DataSetで更新後のデータを引っ張るようにSQL文を記述するしかないと思われる。 たぶん、この現象でUpdate後にDBにNow()が反映されないです。
440 名前:nobodyさん mailto:sage [2009/11/28(土) 16:56:18 ID:???] >>437 以下のテストコード書いてみました。 テーブル名:名簿3 ID(主キー):オートナンバー型(長整数型) 名前:テキスト型(サイズ50) 年齢:数値型(整数型) 作成日時:日付/時間型 更新日時:日付/時間型 <asp:AccessDataSource ID="AccessDataSource11" runat="server" DataFile="~/App_Data/MyDB.mdb" UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ?, [作成日時] = ?, [更新日時] = Now() WHERE [ID] = ?"> <UpdateParameters> <asp:Parameter Name="名前" Type="String" /> <asp:Parameter Name="年齢" Type="Int16" /> <asp:Parameter Name="作成日時" Type="DateTime" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:AccessDataSource> コードを書いて、動かしてみましたが > UPDATE **** WHERE ID = @ID; SELECT *** WHERE ID = @IDみたいな > INSERT ****;SELECT *** WHERE ID = SCOPE_IDENTITY();みたいな のアドバイスをどう反映させれば良いのかわかりません。 上記コードの動きは、エラーは何も表示されず、更新内容がDBに反映されない。 もちろん「更新日時」情報も更新されず、以前の情報が入ったままです。
441 名前:nobodyさん mailto:sage [2009/11/28(土) 18:31:02 ID:???] >>440 まずデータベースに更新されないところを解決してみたら? 自分はAccessではやったことがないので、よくわからんが。 更新時間の表示はそれからでも遅くないぞ。
442 名前:435 mailto:sage [2009/11/28(土) 19:11:41 ID:???] >>441 アドバイスありがとうございます。 正しく動くコードを書いてみました。 以下のコードだと、修正内容でDBが更新され、GridViewへも更新された内容が表示されます。 <asp:AccessDataSource ID="AccessDataSource11" runat="server" DataFile="~/App_Data/MyDB.mdb" UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ?, [作成日時] = ?, [更新日時] = ? WHERE [ID] = ?"> <UpdateParameters> <asp:Parameter Name="名前" Type="String" /> <asp:Parameter Name="年齢" Type="Int16" /> <asp:Parameter Name="作成日時" Type="DateTime" /> <asp:Parameter Name="更新日時" Type="DateTime" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:AccessDataSource>
443 名前:nobodyさん mailto:sage [2009/11/29(日) 16:12:41 ID:???] 教えてください。 visual web developer 2008で 新しいウェブサイトの作成→F5キーで「デバッグを開始」 をすると、 デバッグを有効にするためにweb.configを変更する のダイアログ表示後、 LMS c:\マイドキュメント〜\http:\localhost:3745\(作った新しいウェブサイト名)\ cntaints an invalid path. というダイアログが表示してしまいます。 どういった現象で、どう解決したらよいのでしょうか?
444 名前:nobodyさん mailto:sage [2009/11/29(日) 16:28:31 ID:???] c:\マイドキュメント〜\http:\localhost:3745\(作った新しいウェブサイト名)\ ってディレクトリっていうかフォルダが存在していないとか? そもそもディレクトリ名にコロンとか無理でしょ
445 名前:nobodyさん mailto:sage [2009/11/29(日) 16:39:19 ID:???] >>442 AccessじゃなくてSQLExpress(無料のやつ)で悪いんだけど、こんなんで動作してるな。 しかも、編集したあとはちゃんと日付をもってきてくれてるから、 あとから編集後の行だけ再取得するクエリとか記述しなくてもいいみたいだ。 ちなみに>>437 に書いたのは、.xsd等を使って自分でDataSetを定義して、 Update後に、Updateした行を再取得する方法。 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [TableMaster]" UpdateCommand="UPDATE TableMaster SET TestInt = @TestInt, DateTime = { fn NOW() } WHERE (TestMasterID = @TestMasterID)"> </asp:SqlDataSource>
446 名前:435 mailto:sage [2009/11/29(日) 17:56:49 ID:???] >>445 アドバイスありがとうございます。 当方でもVWD2005 + SQL Server2005でMS Accessと同じテーブルを作成し確認してみました。 [更新日時] = {fn Now()} の記述で問題なく、更新日時に現在に日時が入力されGridViewに 表示されました。 現在の環境はSQL Serverは使えず、MS AccessをDBとして使用しています。 <asp:SqlDataSource ID="SqlDataSource11" runat="server" ConnectionString="<%$ ConnectionStrings:myDb %>" SelectCommand="SELECT [ID], [名前], [年齢], [作成日時], [更新日時] FROM [名簿3]" UpdateCommand="UPDATE [名簿3] SET [名前] = @名前, [年齢] = @年齢, [作成日時] = @作成日時, [更新日時] = {fn Now()} WHERE [ID] = @ID"> <UpdateParameters> <asp:Parameter Name="名前" Type="String" /> <asp:Parameter Name="年齢" Type="Int32" /> <asp:Parameter DbType="Datetime" Name="作成日時" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:SqlDataSource>
447 名前:435 mailto:sage [2009/11/29(日) 17:59:01 ID:???] >>445 ちなみに、新規データ「挿入」時の「作成日時」「更新日時」の自動登録は以下のコードで MS Accessで正しく動作しています。 <asp:AccessDataSource ID="AccessDataSource12" runat="server" DataFile="~/App_Data/MyDB.mdb" InsertCommand="INSERT INTO [名簿3] ([名前], [年齢], [作成日時], [更新日時]) VALUES (?, ?, Now(), Now())" SelectCommand="SELECT [名前], [年齢] FROM [名簿3]"> <InsertParameters> <asp:Parameter Name="名前" Type="String" /> <asp:Parameter Name="年齢" Type="Int16" /> </InsertParameters> </asp:AccessDataSource>
448 名前:nobodyさん mailto:sage [2009/11/29(日) 18:20:39 ID:???] >>447 んじゃ、とりあえずの解決?
449 名前:435 mailto:sage [2009/11/29(日) 18:36:02 ID:???] >>448 いいえ、解決しておりません。 MS Accessで新規データの「挿入」時の作成日時、更新日時の自動設定はうまく動くので すが、GridViewの「編集」「更新」時の更新日時の自動設定を行う方法がわからなくて 困っております。ご指導よろしくお願いします。
450 名前:nobodyさん mailto:sage [2009/11/29(日) 19:26:54 ID:???] >>449 SQLと同じように設定してもだめなの?
451 名前:435 mailto:sage [2009/11/29(日) 20:01:30 ID:???] >>450 そうなんです。AccessをSQL Serverと同じように設定してもだめなんです。 <asp:AccessDataSource ID="AccessDataSource11" runat="server" DataFile="~/App_Data/MyDB.mdb" UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ?, [作成日時] = ?, [更新日時] = Now() WHERE [ID] = ?"> <UpdateParameters> <asp:Parameter Name="名前" Type="String" /> <asp:Parameter Name="年齢" Type="Int16" /> <asp:Parameter Name="作成日時" Type="DateTime" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:AccessDataSource> [更新日時] = Now()に記述しても、動かすとエラーメッセージは出なくて、 GridViewの「編集」「更新」で修正した内容がAccess DBに反映されず、GridViewの表示 も当然更新前の内容が表示されるんです。 どこに問題がありそうでしょうか?
452 名前:nobodyさん mailto:sage [2009/11/29(日) 20:40:39 ID:???] Access持ってないから、テストできないんだよな MSDNでもらったのにOfficeあったかな・
453 名前:435 mailto:sage [2009/11/29(日) 21:05:19 ID:???] >>452 是非Access探してみてください。 Access2007の場合は、.accdtファイルはASP.NETで認識してくれません。 Access2002-2003の.mdbファイルで保存するとASP.NETが認識してくれます。
454 名前:nobodyさん mailto:sage [2009/11/29(日) 22:18:26 ID:???] UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ? ,[作成日時] = ? & left(?,0) , [更新日時] = now() WHERE [ID] = ?" とかにすると動くけど、いらないパラメータ減らしたりすると動かないー
455 名前:nobodyさん mailto:sage [2009/11/29(日) 22:22:51 ID:???] ?とかなってて、個別にフィールド名を指定できないから、 なんかの順番で自動的に埋めてくみたいになってんじゃないかね。 だから順番とか、数の不一致とかでエラーになるとか。
456 名前:435 mailto:sage [2009/11/29(日) 23:07:35 ID:???] >>454 UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ? ,[作成日時] = ? & left(?,0) , [更新日時] = now() WHERE [ID] = ?" で希望通りの動きをしてくれる様になりました。ありがとうございました。 「 & left(?,0)」ダミーで変数をひとつ受け取ってやれば良いと言う事ですね。 ↓希望通り動いたコード <asp:AccessDataSource ID="AccessDataSource11" runat="server" DataFile="~/App_Data/MyDB.mdb" SelectCommand="SELECT [ID], [名前], [年齢], [作成日時], [更新日時] FROM [名簿3] ORDER BY [ID] DESC" UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ?, [作成日時] = ? & left(?,0), [更新日時] = Now() WHERE [ID] = ?"> <UpdateParameters> <asp:Parameter Name="名前" Type="String" /> <asp:Parameter Name="年齢" Type="Int16" /> <asp:Parameter Name="作成日時" Type="DateTime" /> <asp:Parameter Name="更新日時" Type="DateTime" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:AccessDataSource>
457 名前:nobodyさん mailto:sage [2009/11/29(日) 23:21:27 ID:???] >>456 このへんみてみたら? codezine.jp/article/detail/2340?p=3
458 名前:nobodyさん mailto:sage [2009/11/30(月) 17:07:37 ID:???] Web画面上の「機能」と言うボタンを押したらプリンタに帳票を出したいんです。 この際、一度プレブー画面を表示して、プレブー画面上の印刷ボタンでも構いません。 クライアントになんかしらんのエージェントでもインストールしない限り、画面のボタンを 押したらプリンタに出力、というのは実現できない気がするんですが、なにか方法がありま ますでしょうか? Javaスクリプト併用で画面イメージの印刷だったら画面ボタンをクリックして直接印刷できる でしょうか?
459 名前:nobodyさん mailto:sage [2009/11/30(月) 18:08:23 ID:???] >>458 JavaScriptでブラウザの機能としての印刷ダイアログを表示させることはできるね。 bunjin.com/java/btn_prn.html でもブラウザで、四角四面の帳票を印刷させるのはほとんど不可能。 自分でPDFを作成するか、PDFなり、帳票を自動的に作成してくれる コンポーネントを買うほうがいいと思う。
460 名前:nobodyさん mailto:sage [2009/11/30(月) 18:33:40 ID:???] ありがとうございます。 前に以前のプロジェウトでSVFなら使った事あります。ただ、今回の案件では金額的 な面からSVFは導入されなかたので、もし可能ならブラウザーから直接印刷したい 思いました。
461 名前:nobodyさん mailto:sage [2009/12/01(火) 10:42:21 ID:???] 自分はもっぱらActiveReportだなぁ 最近はいろんなのがでてるだろうから、調査しなきゃいけないなあ
462 名前:nobodyさん mailto:sage [2009/12/03(木) 17:06:57 ID:???] iText.netならただでPDF作れるよ
463 名前:nobodyさん mailto:sage [2009/12/03(木) 19:46:35 ID:???] 俺はiTextSharpの方を使っている
464 名前:nobodyさん mailto:sage [2009/12/03(木) 20:05:05 ID:???] そんなのあるのか
465 名前:nobodyさん mailto:sage [2009/12/03(木) 20:32:59 ID:???] それはそれで有り難いけど、DataSetを割り付けるだけで帳票できるような、 フリーなソフトがあればなぁ
466 名前:nobodyさん mailto:sage [2009/12/12(土) 19:46:57 ID:???] GridView内のとある明細のリンクをクリックするとモーダルダイアログが開いて、そこに 詳細情報を表示させる、みたいな処理を考えています。 モーダルダイアログ自体は↓この辺が参考になるかなぁと思っていますが ttp://www.atmarkit.co.jp/fdotnet/dotnettips/580aspajaxmodalpopup/aspajaxmodalpopup.html ダイアログを開く際に詳細情報をサーバに取りに行って、取得した内容をダイアログに出す と言うところが分かりません。(Responseの中に詳細情報を埋め込みたくない) 詳細情報取得の部分だけ別途XML Webサービスで作っておいて非同期に実施? どこかに参考になるようなサンプルがあったりしないでしょうか?
467 名前:nobodyさん mailto:sage [2009/12/12(土) 20:29:38 ID:???] 最近ASP.NETのプロジェクトに掘り込まれて、ASP.NETを勉強している者ですが質問があります。 ポストバックっていう言葉なのですが、何回も言ってるとフィストファックって聞こえませんか? 先日ずっとフィストファックって聞こえて仕事になりませんでした。
468 名前:nobodyさん mailto:sage [2009/12/12(土) 21:14:47 ID:???] >>467 まず耐性を付けることが重要だ。 以後、6を見る度、sexと脳内補完して読むように。 5でチンコでもいいが萎えるようなら止めたまえ。
469 名前:nobodyさん mailto:sage [2009/12/12(土) 22:11:10 ID:???] <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <input id="Text1" type="text" /> これの違いって何ですが? 上は標準のテキストボックス 下はHTMLのテキストボックス
470 名前:nobodyさん mailto:sage [2009/12/12(土) 22:16:42 ID:???] >>469 全然違いすぎて、何が聞きたいのかよく分からん。 もうちょっとどういう観点での違いが知りたいのかを明確に。
471 名前:nobodyさん mailto:sage [2009/12/12(土) 22:26:03 ID:???] エラーメッセージをテキストボックスに表示したいのですが、前任者のソースを見ると <input id="Text1" type="text" /> のテキストボックスに出しているソースと <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> のテキストボックスに出しているソースがあります 何か明確な違い(例えば色を変えられない等)があるのかと思って質問しました。
472 名前:nobodyさん mailto:sage [2009/12/12(土) 23:02:48 ID:???] >>471 まずinputタグの方はそのままではコードビハインドから操作できない。 したがって、動的に変更する場合はJScript等クライアント側から行う必要がある。 まずここが一番大きな違い。 runat="server"をセットすることで、サーバー側から操作できるようになるが、 この場合クラスはHtmlInputTextとなる。 ttp://msdn.microsoft.com/ja-jp/library/system.web.ui.htmlcontrols.htmlinputtext.aspx 後者はTextBoxクラスとして扱われる。 ttp://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.textbox.aspx 最終的にhtmlに展開される点では同じなので、基本的に出来ることも同じ。 そういう意味で(色の設定云々といった)違いは発生しない。 だが、例えばTextBoxはTextModeプロパティを変更することでtextareaタグとして レンダリングされることとなる。この場合、HtmlInputTextとの扱いに差がでる。 前者はあくまで対応するHTMLタグの参照、 後者はASP.NETが抽象化したコントロールという意味的な違いがある。
473 名前:nobodyさん mailto:sage [2009/12/12(土) 23:36:37 ID:???] >>472 分かりやすい説明有難うございます。 URLも参考させて頂きます><
474 名前:nobodyさん mailto:sage [2009/12/13(日) 00:02:26 ID:???] >>466 Responseの中に表示させたくないってのはどういうこと? htmlのソースの中に表示させたくないってこと?
475 名前:nobodyさん mailto:sage [2009/12/13(日) 00:26:25 ID:???] >>474 AJAX使って、クリックされたタイミングでデータを取得してページを部分書き換えしたい ということです。そもそものページ(GridViewが貼ってあるページ)を返すときにはまだ 詳細情報を取得していない状態、としたいのです。(明細行数分の詳細情報とか すごいサイズになってしまうので)
476 名前:nobodyさん mailto:sage [2009/12/13(日) 00:46:07 ID:???] >>475 単に明細ボタンクリックで、詳細を表示させたいということなら、 別ウィンドウを表示させるだけでいいんじゃない? 例えばJavaScriptで、targetが_blankのウィンドウに、 その明細を表示させるためのaspxに、明細のIDをgetなりセッションで渡してあげればいいと思うけど。