【質問】ASP.NETスレ ..
[2ch|▼Menu]
374:nobodyさん
09/10/26 22:46:04
みなさん、ありがとうございます。どうやら簡単にはできなさそうですね。色々調べても初心者の自分には見つけられなかったはずです。

頭の中がPHPになっているものですから切り替えが必要ですね。うーん、頑張ります。

375:nobodyさん
09/10/26 23:26:27
>>374
タグでコントロールを作成っていう意味がわからない…。
ともかく、普通にButtonをNewしてRenderControlすればいいんじゃないの?
idはサーバー側で自動で割り振ってくれたと思うけど。ctl00_xxxみたいな連番で。

376:nobodyさん
09/10/27 01:37:47
>>375
aspxファイルにコードを書けばよいじゃない、という発想。

377:nobodyさん
09/10/27 02:04:17 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さん
09/10/27 06:04:38

よく認証画面などで見かける、数字の画像をランダムに
生成する機能は、何を使えば実現できますか?
フリーウェアでそういった機能のはありますか?

379:nobodyさん
09/10/27 08:21:03
>>377
そもそもの作りが糞。
一般的にはRepeaterやListView等のコントロールのTemplateを使用します。

10年位前の無印ASPなやり方な上に
わざわざサーバーコントロールを使うことで縛りを設けているマゾ仕様。

とりあえずID云々の前に各コントロールへの参照が取れないんだから、
一般的な解決策はほぼ絶望じゃないかな。

>>378
Captchaじゃなかったっけ?

380:nobodyさん
09/10/27 08:42:02 JPv1u5Ye
>>379
ご回答ありがとうございます。了解しました。IDについてはあきらめようと思います。
それにRepeaterやTemplate等の代替え手段を教えていただいたのは非常に助かります。
これから勉強してみて書き換えたいと思います。ありがとうございました。

381:nobodyさん
09/10/27 08:47:17
>>377
それでも出来たと思うよ。
<%#(i * hoge1.coint + j).ToString() %>
とか文字列にする必要があったような。ひょっとしたら#いらないかも。

ただ、ASP.NETはそんなやり方はしないので、
「ASP.NET コントロール 動的生成」あたりでググって調べてみるといいと思う。
たぶんaspxファイルにはPanelやPlaceHolderなどのコントロールだけ配置して
コードビハインドのメソッド内でfor文でコントロールのインスタンスを動的に生成して、
Panelに生成したコントロールをaddしていく形になると思う。

382:nobodyさん
09/10/27 08:54:35
あれ<%$ %>だっけか?
実行時バインドなんてほとんど使わないから忘れた。
出先なので自分のソースも調べらんないし、そのへん調べてみて。

383:nobodyさん
09/10/27 09:06:08 JPv1u5Ye
>>381
具体的なやり方まで教えていただきありがとうございます。作りは悪いのはわかっていても
応急手段でIDの取得ができると本当に助かるのです。今は試せる環境にいないのですが、午
後からでもトライしてみます!

それでもいつかはやはり作り直しが必要だということは認識できました。

384:382
09/10/27 11:40:35
もどってきたのでテストしてみるよ
飯食ってからだけど

385:nobodyさん
09/10/27 11:46:11
上下にページャーを表示したgridviewで、
上のページャーとヘッダの境界の色を変更したいのですがうまくいきません。

どのbordercolorを変更すれば良いのでしょうか?

386:nobodyさん
09/10/27 12:48:40
>>383
あれごめん。
今試した範囲だとIDはやっぱり実行時バインドで設定できないみたいだ。
自分の勘違いだったっぽい。

>>385
GridViewのヘッダを表示してる<tr>要素に対してと、Pagerを表示している<tr>要素にしか
スタイルシートを設定できないので、その範囲で設定するしかないんじゃないかな。
ただPagerにスタイルシート適用すると上下両方とも反映されてしまうので、
上下対称に設定したいのなら、ヘッダの上のラインとフッタの下のラインに対して
スタイルシートを適用すると擬似的に境界の色は変えられると思う。

387:385
09/10/27 13:43:44
>>386
…よく分かりません

現状はこんな感じなんですが…
URLリンク(www.dotup.org)

<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さん
09/10/27 14:04:25
>>387
GridView.PagerStyleプロパティで変更出来るんじゃね

389:nobodyさん
09/10/27 14:29:34
>>388
PagerStyleでやると、上下に配置したのにラインがでちゃう。つまり

PagerStyle
<LINE1>
Grid
<LINE2>
PagerStyle
<LINE3>

PageStyleで下線を付けて<LINE1>を書こうとすると、<LINE3>にも予期しない下線が書かれちゃう。
本当はGridとの境の<LINE2>に線を引きたいはずの場合が多いのに。

>>387
ちょっと試してみるよ

390:nobodyさん
09/10/27 14:40:57
例えば<tr>に対してこんなふうにスタイルシートを設定して、
<style type="text/css">
<!--
tr.test { border-top-color:#00CC00;border-style:Solid; }
-->
</style>
HeaderStyleのCssClassに対してtestを設定するとか。
そうすると境界線のラインだけ色を変更するなり、太さを変更するなりできる。
根本的に別のラインを作りたいとかだと、自分でテンプレートをいじるなりしないといけないと思う。

391:nobodyさん
09/10/27 15:17:58
>>386
わざわざ試していただきありがとうございます。こちらもできないことが確認できました。他の手段で頑張ります。

392:nobodyさん
09/10/27 15:41:47
複雑な構造のhtmlが何かわからんけど、まぁ
htmlと一緒に動的にコントロールを生成して貼り付けていくしかないと思うな

このあたりが役立つんじゃないか?
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)

393:nobodyさん
09/10/27 16:45:14
>>377
サーバコントロールじゃない普通のHTML要素なら、
id="ddl<% Response.Write(なんちゃら)%>"でできる
id="ddl<%= なんちゃら %>でも上と同じ意味

今どうなってるかわからんが、
サーバコントロールにする必要あるのか?
あるいは、ほんとに個別のIDが必要なのか?

個別のID振ったとしても、ページでコントロール生成したら、
実際にインスタンスが生成されるのはHTMLのレンダリング時だから
そのコントロールを操作するタイミングが無いぞ

394:nobodyさん
09/10/27 21:17:37
>>378
あれはCAPTCHAっていう。
フリーで使えるのはここ。
URLリンク(www.mondor.org)

395:nobodyさん
09/10/27 22:25:07
それってひょっとして
文字列をランダムに生成→その文字をbitmapなりで画像にしてランダムに歪ませる→画像として表示
なんてことやってんのかな?

396:nobodyさん
09/10/27 23:28:31
はてな界隈のRubyでつくってみた()笑 とかならそうかもしれないけど、
スパムする方もCAPTCHA破りの画像認識ツールを使っているそうで、
それなりなアルゴリズムを要するんだってさ。
で、そのアルゴリズムが公開されたら、スパマーもそれに対抗して(ry

397:nobodyさん
09/10/27 23:33:19
>>379 >>394
ありがとうございます。あれはCAPTCHAっていうんですね。

自分のサイトで、スクリプトで大量アカウントを作成される可能性
を減らしたかったのです。

ちなみに、中国のサイトで、漢字(簡体字)版のCAPTCHAを見たことがあります。
ピンインがわからないと文字を入力できないというだけでもつらいのに、
文字が歪んでいるから、元の漢字すらわからない。
日本人の自分ですら入力できないのだから、非漢字言語圏の人
にはお手上げだろうなぁ。
漢字版は、国外からのアクセスを禁止したい場合にはいいかもw


>>395
上のサイトみると、ノイズのレベルを調整したりフォントも変更できる
ようで、歪み自体は完全ランダムではないみたい。(文字列は長さを
指定した上でのランダム文字列)


398:nobodyさん
09/10/27 23:47:15
NTTdocomoがhtmlに直書きでやらかしてたなw
どうせデータの仕事だろうけどw

399:nobodyさん
09/10/28 00:31:33
暗号化してポストバックするか、セッションで持つとか、そんな感じ?
NTT-MEかもしれんぞ。
MEなら一度下請けしたことあるけど、うーん、・・・

400:nobodyさん
09/11/03 14:22:11
StringTemplateをWebサイトで使う方法はないのでしょうか。
Web アプリケーションでは使えるのですが。

401:nobodyさん
09/11/16 13:33:42
sessionにデータ突っ込むのってどの位のサイズまで許されるんかなぁ。
3MB位のオブジェクトを突っ込んでもいいんだろうか。
ちなみに同時アクセスは10人程度を想定。無論、InProcで動かしてる前提で。

402:nobodyさん
09/11/17 14:55:18
適切に破棄されて、マシンスペックが問題なければ、好きなように使えばいいんでないの?

403:sage
09/11/18 12:47:49
>>402
全然理解して無い無能が無理して回答しなくて言いと思うんだ。
柔らかい言い方すると、馬鹿は黙ってすっこんでろ池沼。


>>401
100KB以下に抑えるべし。
じゃないとページ開く度に負荷がかかる。3MBとかならSession情報をDBに突っ込む事も
考えたほうがいい。

404:nobodyさん
09/11/18 12:57:24
そんな当たり前の回答は皆思いつくけど回答してないだけで、
動くか動かないかでいえば>>402まちがっちゃいない。

405:nobodyさん
09/11/18 13:16:28
StateServer利用してDBに入れたらシリアル化させる必要があるから、
余計に負荷がかかるんじゃないか?
InProcで問題ないなら、同時使用人数が10人で3Mぐらいなら、
今のサーバなら十分じゃね?
やったことないから適当ぶっこいてるけど。

406:nobodyさん
09/11/18 15:55:22
>>403の100KBって根拠は不明だな
あとページの負荷って、セッションをDBにいれると、DBアクセスの
オーバーヘッド分だけ負荷は増えるんだぜ

>>402はまったく間違えてはいないが、問題は適切な廃棄が難しい
セッションの廃棄はほとんどタイムアウトでしか不可能だから

同時アクセス10人ってのが、同時リクエスト10人なら
1リクエスト1秒でも10分で6000アクセスだぜ
これが全部別セッションで3M使ったらメモリ持たんわな

セッションが一つなら、3Mだろうが10Mだろうが平気だがな

結局のとこ
セッションサイズは小さければ小さいほどいい
実際の限界はマシンスペックと処理するリクエスト数による
っていう、なんの参考にもならん回答に落ち着くわけですわ

407:nobodyさん
09/11/18 16:11:18
一番理解していないのは>>403でした。ちゃんちゃんってことでFA?

408:nobodyさん
09/11/18 16:14:44
男は黙ってQueryString

409:nobodyさん
09/11/18 17:20:35
赤間本には「1つの目安として、数100KBを超えるデータをSeesionオブジェクトに格納する場合には注意が必要」
と、ふわっと書いてあります。

410:nobodyさん
09/11/18 17:45:05
俺の持ってるプログラマ読本には、
メモリ空間は16ビットなのでメモリの消費には絶えず気をつけろって書いてある

411:nobodyさん
09/11/18 18:22:50
>>409
その記述がどこにあるのか正確な所がわからんが、
数百キロで注意なら、百キロなら平気だと取れなくもない

.NETエンタープライズWEBアプリケーション開発技術大全Vol.3では、
100K以下を指標としているが、その脚注に、「実際の上限はシステム構成によって変わるため
最終的にはパフォーマンステストを実施して決定することを推奨する」とある

Iただし、この本ではInProcモードは推奨してない。そしてInProc以外ではセッションの
シリアライズ等に要する時間が無視できないほど大きくなる、とある
さらに、この本は.NET1.1時代の本だから、今の環境にそのままあてはまるとは言えない

まあ、結局のとこテストして様子見てみろ、としか言えない

ただ、InProcからそれ以外に変更すると、InProcでしか格納できないものを
格納してたりしてわけわからんバグのもとになったりするんだよなぁ
なぜ>>401はInProc前提なんだ?

412:nobodyさん
09/11/18 18:35:31
同時アクセス10人が何を意味するかだよな
単純にユーザが10人で、だから同時アクセスの最大数も10とかなら、
全然問題ないんじゃないか?

結局、セッションが適切に破棄できて、サーバスペックが問題ないようなら、
使えばいいんでない?という>>402の結論に帰結する。


413:anonymous
09/11/18 18:59:05
>>412
お前 >406 ちゃんと読んでる?

414:nobodyさん
09/11/18 19:01:33
というかInProcって、プロセス再起動とかで勝手に消えて困るやつじゃ。

415:nobodyさん
09/11/18 19:08:49
>>413
それも一つの解釈だろ?結論ではない。
何を言ってるんだ?

416:nobodyさん
09/11/19 00:16:11
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さん
09/11/19 11:47:40
>>416
結論は両者ともマシンスペック次第って言ってるけど?
なんでそんなに日本語理解能力が乏しいの?

418:nobodyさん
09/11/19 12:14:08
必死ダナー

419:nobodyさん
09/11/19 16:31:43
すみません、どなたか教えて欲しいんですが、現在GligViewをつかって表を表示
させているんですが、現在はとりあえずMAX1000明細に制限して、もし制限を
超えるようなら「検索条件を変えてもっと明細を絞って下さい」みたいなメッセ
ーじを出しているんですが、お客さんからの要望で抽出した明細をきちんと全部
みたいと言われていて、条件を指定しなかったら万単位の明細行数になるんでペ
ージ切り替えでもいいですかって方向で持っていこうとしたらページ切り替えは
分かりにくいから駄目だといわれたんですが、GOOGLEマップみたいに画面
をスクロールさせるとちょっとづずデータを取ってくるような仕組みはASPで
も可能なんでしょうか?

420:nobodyさん
09/11/19 17:21:45
menuItemをクリックされたらjavascript:_doPostBackが呼ばれるよりも前に自前の
JavaScriptを実行したいんだけど可能?
要は「画面を移動します。よろしいですか?」みたいなダイアログを出したい。

ButtonならOnClientClick()で楽勝なんだけど。

421:nobodyさん
09/11/19 18:17:59
>>419
それAJAXで実際にやってみたけど、上のログにも感想あると思うけど、
AJAXで実装したら、サーバへのアクセス〜表示までのタイムラグがありすぎて実用的でなかった。

>>420
>>186参照

422:nobodyさん
09/11/20 00:30:35 Fa9imoF+
教えてください(o_"_)o

Microsoft.Practices.EnterpriseLibrary.Loggingを使って
テキストファイルにログを吐く場合に、文字コードを指定することは可能でしょうか?

423:nobodyさん
09/11/21 14:35:48
Message に入れる前に変換すればよかろ。

424:nobodyさん
09/11/23 01:06:05 4oP4nvDo
ハマってしまっているのでどなたか教えてください。

Public clsA As A = New A
Public clsB As B = New B

上記記述にてクラスファイルを参照し、実行した際に下の行だけ
「見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。」
というエラーが出てしまいます。

原因はなんでしょうか?

425:nobodyさん
09/11/23 03:31:17
もうちょっと詳細を書け
AとかBとかはどこで定義されているんだ


426:nobodyさん
09/11/23 08:32:23
説明が不十分だったみたいですいません。

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さん
09/11/23 10:11:11
まず開発環境かけ
WEBアプリなのかWEBサイトなのか
AとBは同じファイルに定義してあるのか?

まあなんかテンポラリ削除したら直りそうな気もする


428:nobodyさん
09/11/23 11:37:20
何度も申し訳ありません。

VisualStudio2005で作ったWEBアプリで、IIS上で動作させています。
.NETFrameworkは2.0です。

AとBは別ファイルです。

テンポラリはWeb.configの記述ですか?

429:nobodyさん
09/11/23 18:04:25
WEBアプリとWEBサイトの区別はついてるか?
AとBの定義してあるファイルはどこにあるんだ?
そのファイルは.dllなのか.vbなのか?

テンポラリは標準ではたぶん
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
あたり。この中身ズバッと消して見れ

430:nobodyさん
09/11/25 16:38:29
.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さん
09/11/25 18:42:42
表示させるだけなら、SQLのCUBEとか、ROLLUPだっけ?を使えばできるんじゃね?
各明細の編集ボタンも表示させたいとかだと不自由かもしれないけど。

Repeaterでやれば各行を集計して、コード帯やらが変わるたびに集計行を表示とか
いろいろできると思うけど。

432:430
09/11/26 02:15:49
>>431
SQLで小計出力が出来ることを知りませんでした。
cube rollup 調べてみます。
(datatableをバインドする前に、
新たなdatatableを作って、コード帯が10〜19だったら、
それまでの合計を足して、NewRowに入れて、Addするみたいな
イメージで組もうとしてました)

ありがとうございます。



433:nobodyさん
09/11/26 10:44:47
ROLLUP!そういうのもあるのか


434:nobodyさん
09/11/27 00:01:40
FtpのWebClientとかあるけど、あれってクライアントPCからアップできる?

権限のからみでほとんど使えないだが…

435:nobodyさん
09/11/28 08:10:59
GridViewの「編集」ボタンで、データの[更新日時]にNow()関数で更新日時が自動で
入力される様にしたいのですが、色々調べてみたのですがわかりません。
どうすればよいのでしょうか?よろしくお願いします。
DB:MS Access、VWD2005、VB

436:nobodyさん
09/11/28 09:38:53
RowUpdatingイベントで放り込めば

437:nobodyさん
09/11/28 13:32:50
>>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さん
09/11/28 13:34:04
×INSERT **** WHERE ID = @ID; SELECT *** WHERE ID = @IDみたいな
○UPDATE **** WHERE ID = @ID; SELECT *** WHERE ID = @IDみたいな



439:nobodyさん
09/11/28 16:55:14
>>437
ありがとうございます。
> ただ、実際の日付更新はUpdate文にNow()を記述して更新したほうが、
> 日付の更新し忘れがなくていいような気がする。仕様次第だけどさ。

この方法で行きたいです。

> GridViewにDataBindして編集したときって、
> 編集された内容をViewStateで保持し続けて、
> Update後もUpdate前のデータを引きずるんだっけか?
> それでSQL文のNow()が反映されないという意味なら、
> DataSetで更新後のデータを引っ張るようにSQL文を記述するしかないと思われる。

たぶん、この現象でUpdate後にDBにNow()が反映されないです。

440:nobodyさん
09/11/28 16:56:18
>>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さん
09/11/28 18:31:02
>>440
まずデータベースに更新されないところを解決してみたら?
自分はAccessではやったことがないので、よくわからんが。
更新時間の表示はそれからでも遅くないぞ。

442:435
09/11/28 19:11:41
>>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さん
09/11/29 16:12:41
教えてください。

visual web developer 2008で

新しいウェブサイトの作成→F5キーで「デバッグを開始」
をすると、

デバッグを有効にするためにweb.configを変更する
のダイアログ表示後、

LMS
c:\マイドキュメント〜\http:\localhost:3745\(作った新しいウェブサイト名)\ cntaints an invalid path.

というダイアログが表示してしまいます。
どういった現象で、どう解決したらよいのでしょうか?

444:nobodyさん
09/11/29 16:28:31
c:\マイドキュメント〜\http:\localhost:3745\(作った新しいウェブサイト名)\
ってディレクトリっていうかフォルダが存在していないとか?
そもそもディレクトリ名にコロンとか無理でしょ

445:nobodyさん
09/11/29 16:39:19
>>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
09/11/29 17:56:49
>>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
09/11/29 17:59:01
>>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さん
09/11/29 18:20:39
>>447
んじゃ、とりあえずの解決?

449:435
09/11/29 18:36:02
>>448
いいえ、解決しておりません。
MS Accessで新規データの「挿入」時の作成日時、更新日時の自動設定はうまく動くので
すが、GridViewの「編集」「更新」時の更新日時の自動設定を行う方法がわからなくて
困っております。ご指導よろしくお願いします。

450:nobodyさん
09/11/29 19:26:54
>>449
SQLと同じように設定してもだめなの?

451:435
09/11/29 20:01:30
>>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さん
09/11/29 20:40:39
Access持ってないから、テストできないんだよな
MSDNでもらったのにOfficeあったかな・

453:435
09/11/29 21:05:19
>>452
是非Access探してみてください。
Access2007の場合は、.accdtファイルはASP.NETで認識してくれません。
Access2002-2003の.mdbファイルで保存するとASP.NETが認識してくれます。

454:nobodyさん
09/11/29 22:18:26
UpdateCommand="UPDATE [名簿3] SET [名前] = ?, [年齢] = ? ,[作成日時] = ? & left(?,0) , [更新日時] = now() WHERE [ID] = ?"
とかにすると動くけど、いらないパラメータ減らしたりすると動かないー

455:nobodyさん
09/11/29 22:22:51
?とかなってて、個別にフィールド名を指定できないから、
なんかの順番で自動的に埋めてくみたいになってんじゃないかね。
だから順番とか、数の不一致とかでエラーになるとか。

456:435
09/11/29 23:07:35
>>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さん
09/11/29 23:21:27
>>456
このへんみてみたら?
URLリンク(codezine.jp)

458:nobodyさん
09/11/30 17:07:37
Web画面上の「機能」と言うボタンを押したらプリンタに帳票を出したいんです。
この際、一度プレブー画面を表示して、プレブー画面上の印刷ボタンでも構いません。

クライアントになんかしらんのエージェントでもインストールしない限り、画面のボタンを
押したらプリンタに出力、というのは実現できない気がするんですが、なにか方法がありま
ますでしょうか?

Javaスクリプト併用で画面イメージの印刷だったら画面ボタンをクリックして直接印刷できる
でしょうか?

459:nobodyさん
09/11/30 18:08:23
>>458
JavaScriptでブラウザの機能としての印刷ダイアログを表示させることはできるね。
URLリンク(bunjin.com)

でもブラウザで、四角四面の帳票を印刷させるのはほとんど不可能。
自分でPDFを作成するか、PDFなり、帳票を自動的に作成してくれる
コンポーネントを買うほうがいいと思う。

460:nobodyさん
09/11/30 18:33:40
ありがとうございます。
前に以前のプロジェウトでSVFなら使った事あります。ただ、今回の案件では金額的
な面からSVFは導入されなかたので、もし可能ならブラウザーから直接印刷したい
思いました。

461:nobodyさん
09/12/01 10:42:21
自分はもっぱらActiveReportだなぁ
最近はいろんなのがでてるだろうから、調査しなきゃいけないなあ

462:nobodyさん
09/12/03 17:06:57
iText.netならただでPDF作れるよ

463:nobodyさん
09/12/03 19:46:35
俺はiTextSharpの方を使っている

464:nobodyさん
09/12/03 20:05:05
そんなのあるのか

465:nobodyさん
09/12/03 20:32:59
それはそれで有り難いけど、DataSetを割り付けるだけで帳票できるような、
フリーなソフトがあればなぁ

466:nobodyさん
09/12/12 19:46:57
GridView内のとある明細のリンクをクリックするとモーダルダイアログが開いて、そこに
詳細情報を表示させる、みたいな処理を考えています。

モーダルダイアログ自体は↓この辺が参考になるかなぁと思っていますが

URLリンク(www.atmarkit.co.jp)

ダイアログを開く際に詳細情報をサーバに取りに行って、取得した内容をダイアログに出す
と言うところが分かりません。(Responseの中に詳細情報を埋め込みたくない)

詳細情報取得の部分だけ別途XML Webサービスで作っておいて非同期に実施?
どこかに参考になるようなサンプルがあったりしないでしょうか?

467:nobodyさん
09/12/12 20:29:38
最近ASP.NETのプロジェクトに掘り込まれて、ASP.NETを勉強している者ですが質問があります。
ポストバックっていう言葉なのですが、何回も言ってるとフィストファックって聞こえませんか?
先日ずっとフィストファックって聞こえて仕事になりませんでした。

468:nobodyさん
09/12/12 21:14:47
>>467
まず耐性を付けることが重要だ。
以後、6を見る度、sexと脳内補完して読むように。
5でチンコでもいいが萎えるようなら止めたまえ。

469:nobodyさん
09/12/12 22:11:10
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Text1" type="text" />
これの違いって何ですが?
上は標準のテキストボックス
下はHTMLのテキストボックス

470:nobodyさん
09/12/12 22:16:42
>>469
全然違いすぎて、何が聞きたいのかよく分からん。
もうちょっとどういう観点での違いが知りたいのかを明確に。

471:nobodyさん
09/12/12 22:26:03
エラーメッセージをテキストボックスに表示したいのですが、前任者のソースを見ると
<input id="Text1" type="text" />
のテキストボックスに出しているソースと
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
のテキストボックスに出しているソースがあります

何か明確な違い(例えば色を変えられない等)があるのかと思って質問しました。


472:nobodyさん
09/12/12 23:02:48
>>471
まずinputタグの方はそのままではコードビハインドから操作できない。
したがって、動的に変更する場合はJScript等クライアント側から行う必要がある。
まずここが一番大きな違い。
runat="server"をセットすることで、サーバー側から操作できるようになるが、
この場合クラスはHtmlInputTextとなる。
URLリンク(msdn.microsoft.com)
後者はTextBoxクラスとして扱われる。
URLリンク(msdn.microsoft.com)

最終的にhtmlに展開される点では同じなので、基本的に出来ることも同じ。
そういう意味で(色の設定云々といった)違いは発生しない。
だが、例えばTextBoxはTextModeプロパティを変更することでtextareaタグとして
レンダリングされることとなる。この場合、HtmlInputTextとの扱いに差がでる。
前者はあくまで対応するHTMLタグの参照、
後者はASP.NETが抽象化したコントロールという意味的な違いがある。

473:nobodyさん
09/12/12 23:36:37
>>472
分かりやすい説明有難うございます。
URLも参考させて頂きます><

474:nobodyさん
09/12/13 00:02:26
>>466
Responseの中に表示させたくないってのはどういうこと?
htmlのソースの中に表示させたくないってこと?

475:nobodyさん
09/12/13 00:26:25
>>474
AJAX使って、クリックされたタイミングでデータを取得してページを部分書き換えしたい
ということです。そもそものページ(GridViewが貼ってあるページ)を返すときにはまだ
詳細情報を取得していない状態、としたいのです。(明細行数分の詳細情報とか
すごいサイズになってしまうので)

476:nobodyさん
09/12/13 00:46:07
>>475
単に明細ボタンクリックで、詳細を表示させたいということなら、
別ウィンドウを表示させるだけでいいんじゃない?

例えばJavaScriptで、targetが_blankのウィンドウに、
その明細を表示させるためのaspxに、明細のIDをgetなりセッションで渡してあげればいいと思うけど。


477:nobodyさん
09/12/13 21:01:29
別ウィンドウを使ったなんちゃってモーダルダイアログは色々不具合の元になるので
避けたいんです。

478:nobodyさん
09/12/13 21:22:18
>>477
ならASP.NET AJAXを使って、普通に記述するだけで表示できるよ。
GridViewのイベントをフックして、その明細を表示するIDを取得して、
普通にDataSetに明細データを読み込んで表示させればいい。

479:nobodyさん
09/12/14 00:24:48

で、具体的には?

480:nobodyさん
09/12/14 00:52:21
>なんちゃってモーダルダイアログ
ModalDialogExtenderがなんちゃってだぞ。
showModalDialogも知らんのか。

481:nobodyさん
09/12/14 00:56:45
今時showModalDialogとかww

482:nobodyさん
09/12/14 00:59:21
>>479
具体的にも何も、そのまま普通にポストバック形式で記述して、
ASP.NET AJAXを導入するだけでしょ。
それ以上、どうやって具体的に説明すればいいか、
現実的な方法が思い浮かばない。

483:nobodyさん
09/12/14 02:45:20
まあ、一般論として 「普通に〜すればいいよ」 「普通に〜させればいい」 という回答を返す奴は
実は判ってないか、質問が理解出来ていないかのどっちか。


484:nobodyさん
09/12/14 05:56:26
>>483
それじゃソースをよこせって言ってるようなもんじゃん
ポストバック形式で記述します。
ASP.NET AJAXを導入します。
実現できるよね?

じゃ、こういえばいいのかな。
GridViewのそれぞれの行にButtonを設置するよね。
でそのButtonクリックでイベントを発生させて、その行のデータのIDを引数として渡す。
んでaspxでそのイベントをフックして、IDを取得できるので、
そのIDから、データベースよりデータを取得して、DataSetに格納する。
さらに任意のサーバコントロールを設置して、ダイアログ画面として表示させ、
そのダイアログの画面の、それぞれのサーバコントロールにDataSetに取得したデータを表示させる。

これをそれぞれ、目的に合致するようにソースに置き換えればいい。
何か難しいことがある?

485:nobodyさん
09/12/14 09:40:19
その記述で、お前が本質的に質問を理解していない事は分かった。

486:nobodyさん
09/12/14 10:43:34
>>485
ん?
返答の意味と違うのなら答えてあげてよ。
理解している人が。

487:nobodyさん
09/12/14 13:26:06
>>466
URLリンク(www.atmarkit.co.jp)
@ITより詳しい内容が本になって出てるので、それも参考に
ASP.NET AJAXプログラミング(マイコミ)

488:nobodyさん
09/12/14 13:37:08
>>484
君、典型的だね。

489:nobodyさん
09/12/14 13:41:14
>>487
そんなの使う必要ないよ。
AJAX使えばいいんだから。

490:nobodyさん
09/12/14 13:51:36
>>487
お前勘違いしてるだろ。
要は明細を表示させればいいわけで、XMLWebサービスを使わなければならない必要はない。
だから、ただASP.NET AJAXを導入すればいいだけ。

491:nobodyさん
09/12/14 14:03:05
だんだん、「AJAXを導入すればいいだけ」をひつこく繰り返してるのは、判ってる判って
ないと言うよりは単に荒らしてるだけのように見えてきた('A`

AJAXを導入すれば何もしなくてもいいと思ってんの?
つーか、「AJAXを導入」ってどういう意味で言ってるの?

492:nobodyさん
09/12/14 14:07:17
インストールすりゃ、ほとんど何もしなくていいんじゃない?

493:nobodyさん
09/12/14 14:08:30
あ、お前、ひょっとしてASP.NET AJAX知らないの?

494:nobodyさん
09/12/14 14:16:40
大抵の事はVisualStudioをインストールすれば出来るよ。

495:nobodyさん
09/12/14 14:20:04
2008使おうよ。

496:nobodyさん
09/12/14 14:21:09
全ての質問はWindowsにVisualStudio2008をインストールすれば解決するよ。
あ、お前もしかしてVisualStudio2008の使い方知らないの?

つまりこうですね。

497:nobodyさん
09/12/14 14:26:00
おまえら、もういい加減にいじめるのを止めて教えてやれw

>>491
AJAX Control ToolkitとASP.NET AJAXは別物なんだよ
ASP.NET AJAXってのは、ASP.NET 2.0 AJAX Extensions 1.0のことでVS2005のアドオン。
VS2008には標準装備で、プロジェクトでAJAX Webサイトを作成すれば、自動的に利用できる。
ASP.NET AJAXは、コーディングレスでデータ取得や描画をAJAX化してくれる。
だから、XMLWebサービスを使わなくても、ASP.NET AJAXを利用する手はずさせすれば、
ボタンクリック時にデータを取得して、ポストバックせずに画面の一部を変更する
なんてことができるんだよ。

ASP.NET AJAXならコーディングレスでAjaxを実装できる(前編)
URLリンク(itpro.nikkeibp.co.jp)
ASP.NET AJAX ファーストルック
−ASP.NETアプリケーションをプログラミングなしでAjax化−
URLリンク(www.atmarkit.co.jp)

つーわけで>>478>>482>>484は正解。
>>485>>488>>491はもっと勉強してから出直してくるように。

498:nobodyさん
09/12/14 15:31:26
はいはい自演乙。
AJAXに手を出せば出来る事は、そもそも質問者も最初に書いてる訳で。
具体的な方法が判らないつーてるのに二言目には「AJAX使え」と繰り返すばかり。
馬鹿なの?実は具体的な実装例は判ってないでしょ?

・・・と言う点を指摘されてる事もわからない訳ですね。

499:nobodyさん
09/12/14 15:37:08
具体的も何もPostBack仕様で作って、ASP.NET AJAXを適用するだけだろ?
PostBack仕様は>>484が書いてる通りじゃん。
つまり>>484の通りに作って、「ASP.NET AJAXを導入」しさえすれば、
>>497に書いてある通り、「コーディングレスでAjaxを実装できる」ということ。

他にどのように説明をしろと?

500:nobodyさん
09/12/14 15:41:00
もうほっとけって。

501:nobodyさん
09/12/14 15:53:37
ASP.NET AJAXを使ったこと無い人が、ただのAjax技術を想像して文句を言うの図?

>>491
>AJAXを導入すれば何もしなくてもいいと思ってんの?
うんASP.NET AJAXを導入すれば何もしなくてもいいの。

502:nobodyさん
09/12/14 16:12:59
今北新参
とりあえずAJAXっていうのが凄いって事はわかった
なんか似たような拡張もの?でMVCうんたらみたいのもあるけどあぁいうの使ってるの?
他にもこういうのある?

503:nobodyさん
09/12/14 16:29:21
まあ、具体的な実装がよく解らない、つー最初の質問に対しては >487 の回答がベスト。
別にXML Webサービスに分離する必要もないけど、XML Webサービスを使っても実現出来る
以上、あとは実装者のお好み次第。

サルみたいに「AJAX導入」を繰り返すだけの回答で質問者が理解出来てるならそれで十分。
以上終了。

504:nobodyさん
09/12/14 17:11:56
>>503
自演乙
やっと理解できた?ASP.NET AJAX導入についてw

505:nobodyさん
09/12/14 17:17:44
具体的実装もなにも、
ただポストバックする方法で作ればいいだけなんだから、
それ以上の答えなんてないだろw

>478 名前: nobodyさん [sage] 投稿日: 2009/12/13(日) 21:22:18 ID:???
>ならASP.NET AJAXを使って、普通に記述するだけで表示できるよ。
>GridViewのイベントをフックして、その明細を表示するIDを取得して、
>普通にDataSetに明細データを読み込んで表示させればいい。

ほんとこのまんまじゃん。
ASP.NET AJAXを利用して、
GridViewのイベントフックメソッドでid取得して、明細データを取得して表示
これ以上どんな説明すればいいんだ?ww

506:nobodyさん
09/12/14 18:19:02
>>505
お前の言うポストバックする方法ってのはいまいち理解できん
ASP.NETでポストバックじゃない方法があるのか?(MVCはしらん)

具体的にって言ってるんだから、サンプルコードでも出してみてくれ
ASP.NET AJAXの何を利用するんだ?具体的な関数やコントロールは?


507:nobodyさん
09/12/14 18:26:10
!!!!!!!!!!!!!!!!!!!!!!!!!!

>ASP.NET AJAXの何を利用するんだ?具体的な関数やコントロールは?
>ASP.NET AJAXの何を利用するんだ?具体的な関数やコントロールは?
>ASP.NET AJAXの何を利用するんだ?具体的な関数やコントロールは?
>ASP.NET AJAXの何を利用するんだ?具体的な関数やコントロールは?


508:nobodyさん
09/12/14 18:26:44
具体的にって突っ込みされたら「具体的も何も(ry」って返ってくるだけw
あんまり苛めてあげないでw

509: ◆OUFPNullPo
09/12/14 18:38:01
OK把握した(`・ω・´)
代わりに俺が書いて見るぜ。

まずは、ToolKitインストールするからちょっとまってね(´・ω・`)

510:nobodyさん
09/12/14 18:53:18

URLリンク(mattberseth.com)

511:nobodyさん
09/12/14 19:03:02
>>510
ModalPopupとUpdatePanelつかってやるのが一番一般的だね。
同じようなサンプルだけど、この辺↓も。

URLリンク(msdn.microsoft.com)

まあ、いずれにせよ、AJAXを導入しただけじゃ駄目だし、別にGridViewのイベントを
フック(今読むとこれも意味不明だw)してる訳でもないし、AJAX導入だけで出来る
と主張してる奴はもっと違うやり方なんだろうなw


ちなみにGridViewを使う必要がないなら、DynamicContextという手もある。

512: ◆OUFPNullPo
09/12/14 19:17:58
あらら、先にサンプルかかれちゃった(´・ω・`)ショボーン

>>511
いや、基本それと同じでしようね。
GridViewのイベントハンドラメソッド内で、何らかのデータを取得して表示させるというのは
>GridViewのイベントをフックして、その明細を表示するIDを取得して、
>普通にDataSetに明細データを読み込んで表示させればいい。
が意味してるんでしょう。

んで、データを後からもってくるというのは、PostBackせずに部分PostBackで
ModalPopup内の表示を変更するということで、AJAXがコードを記述しなくてもやってくれる
=AJAXを設定するだけでOKということだね。



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

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