【質問】ASP.NETスレ Part4【議論】at PHP
【質問】ASP.NETスレ Part4【議論】 - 暇つぶし2ch14:nobodyさん
07/07/20 17:13:03 dtQ5f3a5
HttpSessionStateって勝手にWeb.configのsessionStateタグを読みますが
Web.configじゃなくて他のファイルを読ませたい場合はどうしたら良いでしょうか?
Web.configってプロジェクト単位で出来ちゃうから、色んなプロジェクトで共通につかっているファイルを読ませたいんです。

15:nobodyさん
07/07/20 22:09:50
>>14
構成ファイルの階層と継承の仕組みを考えると,
システム共通の設定はmachine.configで定義するだけで良いし
関連アプリケーション共通の設定ならフォルダ構成をきちんと管理すれば良い。

16:nobodyさん
07/07/21 10:43:46 u6ArajqG
>>13
<%= Request

17:nobodyさん
07/07/21 10:45:50
>>9
可能
なんもかんでもとりあえず聞かずに
実現方法を少しは自分で考えてね。

18:nobodyさん
07/07/21 10:48:50
>>8
意味不明
「クライアント側でも」の意味が分かってないのか?
とりあえずWEBの基本でも勉強した方がいいよ。

19:nobodyさん
07/07/21 16:36:49 LDWi9U5y
ASP.NET2.0で SessionのTimeout時点で処理を行うようにしたいです。
SessionモードはStateServerを使用しています。

すべてのセッションがタイムアウトしているかどうかを監視するサービスを作る必要があるのか
と思ったのですが
簡単に実現する方法はありますでしょうか?

アプリケーション上ですべてのセッションの状態を見ることはどのようにすればできるでしょうか?
HttpApplicationからは自分のセッションしか見れないように見えました。


20:nobodyさん
07/07/22 00:52:26 zWRToYk9
VB8ってVS2005で開発するVB.NETのこと?

21:nobodyさん
07/07/22 09:42:13
VisualBasic(VisualStudio).NET(2002)= 7
VisualBasic(VisualStudio).NET 2003 = 7.1
VisualBasic(VisualStudio).NET 2005 = 8
VisualBasic(VisualStudio).NET 2008 = 9

わからなかったら検索する癖つけような。
WikiPediaに載ってた。

22:nobodyさん
07/07/22 12:41:22
よくグリッドのヘッダがクリックできるようになってて
クリックすることでそのヘッダでソート出来るというものがありますが
これてクリックしたイベントでSQL発行してソートさせてるんでしょうか?
それともDataTableのメソッドでソート処理が出来るのでしょうか?

23:nobodyさん
07/07/22 15:06:21
GridViewのソートを自作するのなら
DataTable(DataView)を並び替えようが
SQL発行しようが好きなようにやればよい。

24:nobodyさん
07/07/22 21:07:17
>>19
そもそも、ASP.NETに関わらず自分のセッション情報以外に
アクセスできるのはセキュリティ的に問題があるので
実装されている方が珍しいと思います。

とりあえず、「すべてのセッションがタイムアウトしているか」なら
SessionモードはStateServerでも確かApplication_OnEndが動いたはず。
コレで代用できるのなら利用してみたら。

あとは、
「すべてのセッションがタイムアウトしているかどうかを監視するサービス」
と言うのをどう言う風に想定してるのか分からんが、
セッション情報をDBにでも書き出しておいて作れば良い。

ASP.NET パフォーマンス カウンタでアクティブなユーザー セッション数が
取得できているから、外部から取得する方法もあるかも知れんが。
URLリンク(technet2.microsoft.com)

25:nobodyさん
07/07/22 22:12:21
つい最近までレガシーASPしかやってなかったが、
.NETを使わないとそろそろ…と思いいじりはじめたところ
初歩的なWEBフォームを.NETで作ろうとして悩み中。

レガシーASPでは、
入力画面(html)→入力値のチェック&確認画面の表示(ASP)→DBへ入力値の登録&確認メール送信&登録完了画面の表示(ASP)
という感じでチマチマやってたのを
ASP.NETじゃどうやりゃいいんでしょか?

ググってみたものの、案外そういうもののサンプルが見つかりません。
もっと高度そうなスケジューラとか在庫管理とかならあるんですが、
なにか手がかりあれば、教えていただけると助かります。

26:nobodyさん
07/07/22 22:54:06
>392
ググって見つからないなら本屋行け。
仮にもASP経験してこの程度のことで人の手借りるのは手抜きにも程がある。

27:nobodyさん
07/07/22 22:55:18
↑、>25だ

28:nobodyさん
07/07/22 23:27:09
Eval()とDataBinder.Eval()の違いがいまいち分からないのですが。
それぞれの使いどころを教えていただけないでしょうか?

29:nobodyさん
07/07/22 23:32:46
>>25
ASP.NETの特性

コントロールの状態(値とか状態とか)を再描画のたびに復元する必要が無い(ViewStateが自動的に行ってくれる)
イベントトリブンで記述が可能(イベントを認識するためのJavascriptを自動的に記述してくれる)
ポストバックが基本(データをポストする先は常にそのページ自身)
コントロールが必要とする基本的なJavascriptは自動的に作成

他にも色々あるが省略
で、これを上を意識できないと結局レガシーASPと同じになるので
やり方は色々あると思うが簡単に説明。

aspxファイルにViewStateを活用するために「Panel」コントロールあたりを3つ作成し、
それぞれのPanelに「入力画面(ボタンやTextBoxのnput系のHTMLタグをASPコントロールで)」、
「確認画面(Labelコントロールあたり)」、「登録完了画面」を作成
あとはasp.netボタンのclickイベントで処理+それぞれのPanelのVisibleを制御
(デザインのボタンコントロールをダブルクリックすればVBの様にイベント書く所へ飛ぶ)
エラーチェックは検証コントロールかJavascript・clickイベント内で行う。

まぁ、本とか>>2のMicrosoft ASP.NET クイック スタート チュートリアルで
サーバコントロールとかViewStateとかの裏側の動き(レガシーASPの動作に置き換えて)
理解する事をお薦めします。

30:nobodyさん
07/07/22 23:54:09
>>29
ご丁寧な解説どうもありがとうございます。
教えていただいた内容をふまえてがんばります。

ここ1週間ほど本屋を5~6軒まわりASP.NET初心者向けを3冊ほどは買ったのですが
GridViewやFormViewを使った割と高度なシステムの例はあっても
案外こういう低レベルに見えた受付フォームみたいなものの例がなく、
悩んでおりました。

31:nobodyさん
07/07/22 23:55:11
レガシーASPはどういう意味ですか?
普通のASPと違うの?

32:nobodyさん
07/07/23 00:05:24
>>28
DataBinder.Eval(Container.DataItem, "aaa"と
Eval("aaa")の違いって事か?
上記の事なら詳しく説明するの面倒なので簡単に言えば「同じもの」

>>31
legacyの辞書的な意味は『遺産、遺物』。
コンピュータの世界では古い技術であるが現在まで残っている技術

33:19
07/07/23 00:05:44
>>24
レスありがとうございます。

セッションがタイムアウトしたら、連携するシステムに対して
ユーザがいなくなったことを通知しなければいけないので
DB使わずにASP.NET組み込みのイベントなどで簡単にできないのかな?と思いました。

「すべてのセッションを監視して、タイムアウトしたセッションに対して処理を実行したい」が正しい記述でした。
申し訳ないです。

素直にDBに格納する方が楽なようです。
サンプル セッション状態ストア プロバイダ
URLリンク(msdn2.microsoft.com)(VS.80).aspx
とか参考にして何とかなりそうです。

> 「すべてのセッションがタイムアウトしているかどうかを監視するサービス」
> と言うのをどう言う風に想定してるのか分からんが、

同一アセンブリ内で監視サービスでセッションを監視しようとしていましたが
AppDomainのアンロードと共に監視対象がリセットされてしまうため、うまくないなぁと。。
アプリケーション状態の保存にもちょっとだけSessionServer使わせてよ。と思ったけど、
現在のHttpContextを元にSessionStateの実装が想定されているので無理でした。


34:nobodyさん
07/07/23 06:47:10 srWGE4oQ
SqlDataSourceよりObjectDataSourceのほうが機能がよさげなんですが
SqlDataSourceを使うメリットはあるんでしょうか?

35:nobodyさん
07/07/23 14:26:55
>>34
SqlDataSourceをGridViewに使えば、
単一のテーブルであれば「ソート」「ページング」「更新」「削除」を
自動的に作成してくれます。

まぁ、ObjectDataSourceとかDataSourceへDataTableとかじゃないと
複雑なロジックには耐えきれないとは思うが。

36:nobodyさん
07/07/23 15:38:43
マウスカーソルを砂時計にするC#での記述はどのようにすれば良いでしょうか?
JavaScriptでは可能なのですが、C#で書きたいのでよろしくお願いします。

37:nobodyさん
07/07/23 21:38:10
C#でJavaScriptを書く

38:nobodyさん
07/07/23 21:46:09
MsgBoxの代用ってJavaScriptかVBScriptしかないんでしょうか?
でも、どこみてもJavaScriptしか書かれてないんですけど、
VBScriptだと相性が悪いんでしょうか?
教えてください

39:nobodyさん
07/07/23 22:14:54
VBScriptはInternetExplorerでしか動作しないから

40:nobodyさん
07/07/23 22:28:49
DataSetとDataTableはどう使い分けていますか?
DataSetはあまり使う機会が無いのですが。
DataTableはGridViewのDataSourceにぶち込むためによく利用しますが。

41:nobodyさん
07/07/23 23:16:28 yAPedHBa
>>40
URLリンク(msdn.microsoft.com)

42:nobodyさん
07/07/25 12:46:29 SGx7LnS+
サーバコントロールのボタンのイベントのonclientclickイベントで
AllDisabled()という全てのコントロールを無効化し、onserverclickイベントで処理をしたいのですが、ボタンを無効にすると
Page_Load後に本来処理が走る、onserverclickイベントが実行されません。

function AllDisalbed()
{
var i;
var cnt;

cnt = document.forms(0).elements.length
for(i = 0; i < cnt; i++){
document.forms(0).elements(i).disabled = true;
}
}

例えば、登録ボタンをクリックした場合など、その処理中に
画面上のボタンやリンクをクリックさせたくない場合、皆さんはどのようにロジックを組んでいますか?
クライアントで処理するのではなく、Page_Loadで書いてたりするのでしょうか?

43:nobodyさん
07/07/25 13:21:44
>>42
disabledにするとASP.NETのポストバック判別用の
JavaScriptが動作しないのでイベントが動かなくなる。
だから、setTimeoutでワンクッション置くと解決する。

setTimeoutを使いたくないなら、
URLリンク(osada.bz)
あたりを参考にdisabledの後にボタン本来のポストバック関数を呼ぶ。


44:nobodyさん
07/07/25 16:41:06
C#でテキストボックスの内容が数値かどうかをチェックするには
TrayParseを使わないとダメなのでしょうか?

皆さんはこんな感じでロジックを組んでいるのでしょうか?
IsNumeric関数のように対象文字列だけ引数に入れるような関数は無いのでしょうか?

int nNull;

if (!int.TryParse(this.text1.Value.ToString(), out nNull))
{
this.text1.Value = "0";
}

45:nobodyさん
07/07/25 21:02:25
>>44
好きなように組んでください。

46:nobodyさん
07/07/30 15:04:02 7sXEyNUj
テキストボックスやテキストエリアにタグを入力してPostBackすると
「危険な可能性のある Request.Form 値がクライアントから検出されました。」
というエラーが発生します。

このエラー対応はWeb.configに<pages validateRequest="false"></pages>を追加して
サーバでチェックするのが一般的なのでしょうか?

47:nobodyさん
07/07/31 07:39:20 XmzlopkS
catch内の処理で例外が発生したらどうなっちゃうの?

catchでエラー画面にResponse.Redirectで遷移し、ついでにResponse.End()もやってるんだけど
これってやばい?
Resonse.RedirectってResponse.End()ってやらないとすぐに遷移しないですよね。
それがヤダ。
画面が全部表示しきってから遷移するんだもんなぁ。
これって何とかならんの?
Response.End()やるしかない?

48:nobodyさん
07/07/31 10:59:11
>>46
システムによる。

>>47
Resonse.Redirectの第二引数をfalseにしていないなら、
Resonse.Redirectは同時にResponse.Endも行ってるでしょ。

なんか意図してるところが違うのか?よくわからん。

49:nobodyさん
07/08/01 23:18:10 Ls359Xqo
ASPの画面であるボタンを押下した時に当然aspx.csの中の
そのボタンイベントメソッドに入ると思うのですが、
その中でいろいろ処理をした後にReturn値を取得して、
分岐でそのReturn値が1だったらASP画面のボタンの右横に○、
2だったらボタンの右横に×を出すようにしたいのですが
どうすればいいのでしょうか?


50:nobodyさん
07/08/02 00:07:35
なんとも要領を得ない文章だが、サーバサイドとクライアントサイドの処理の違いがわかってないことだけはわかった。
入門書読んで出直しといで。

51:nobodyさん
07/08/02 00:22:10
>>51
答えられないんだったらいちいち書き込むなよ

>>50
ASP側に id="Label1"というLabelを仕込んで
aspx.csファイル側でif文かなにかで
Label1.Text = "○"
Label1.Text = "×"
にすればよい

52:nobodyさん
07/08/02 00:23:13
>>51
間違った
49と50だった…

53:nobodyさん
07/08/02 11:56:36
>>52
レスもレス番もまともに書けんのか

54:nobodyさん
07/08/02 20:55:45
>>51
本当にそれでいける?

55:nobodyさん
07/08/02 23:29:29 aUE57HU0
aspx.csでダイアログ画面を閉じたいのですが
csでjavascriptのwindow.close()を実行しても、すぐには実行されず
画面上の全てのhtmlを出力してから実行されますね。
スクリプトをすぐに実行したい場合、どうしたら良いのでしょうか?
たとえば、登録ボタンをクリックした時、Page_Loadで登録処理を行い、すぐに画面を閉じたいのです。
閉じるようの画面を作って、その画面にRedirectする方法しか思いつかない。

56:nobodyさん
07/08/03 11:52:20
途中でFlush()メソッドしてやればいいのでは?

57:nobodyさん
07/08/03 17:33:12 9JZ2axOl
ASP.NETの質問をさせてください。
TestソリューションにAプロジェクトとBプロジェクトを追加し
Bプロジェクトの参照設定で、Aプロジェクトを追加しました。
Bプロジェクトに追加されたAプロジェクトはローカルにコピーしないを設定しました。
これで実行すると、Aプロジェクトがどこにあるか分からない的なエラーが出るのですが
どう改善したら良いのでしょうか?
A.dllをグローバルアセンブリキャッシュに登録しないやり方があれば教えてください。

58:nobodyさん
07/08/03 22:32:35
どうしてエラー内容を正確に書かないのか

59:nobodyさん
07/08/03 22:56:53
いいからローカルにコピーする設定にするんだ

60:nobodyさん
07/08/03 23:21:02
>>58
依存関係がどうのこうのってエラー。

>>59
ローカルにコピーしたらA.dllを修正した場合
BプロジェクトのbinにあるA.dllも手作業で修正後のdllに変更しないと駄目じゃん。

この例ではAとBプロジェクトの2つだけだけど
仮にAプロジェクトを参照設定しているプロジェクトが10個とかあったらどうするの?

61:nobodyさん
07/08/04 01:05:56
あほ?


62:nobodyさん
07/08/04 13:22:46
だから動的にってあれほど・・・

63:nobodyさん
07/08/04 19:57:46
>どうしてエラー内容を正確に書かないのか

64:nobodyさん
07/08/05 05:19:17
>60
無理だからあきらめろ。

65:nobodyさん
07/08/09 01:47:23 bl38nCXt
こんばんわ。
質問があります。

[ASP.NET AJAX]ASP.NET AJAX Control Toolkitを利用するには?[2.0のみ、C#、VB]
URLリンク(www.atmarkit.co.jp)

にあるように、AJAXコントロールキットを組み込んで、レンタルサーバ(DOTNETレンタルサーバ)に
プロジェクトをアップロードして確かめたところ、以下のエラー出ました。

'/' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------

パーサー エラー
説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。

パーサー エラー メッセージ: ファイルまたはアセンブリ 'AjaxControlToolkit'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。




これは、なぜ起きるのでしょうか?
ちなみに、自分のPC上では正常に動作しました。
問題なのは、レンタルサーバー上でエラーとなったことです。

66:nobodyさん
07/08/09 11:39:58
>>65
AJAX Control ToolkitはAJAX Extensionsと
異なるDLLで動作してかつ現状グローバル・アセンブリ・
キャッシュにも登録されないので、サイトルートのbinフォ
ルダの中に「AjaxControlToolkit.dll」が必要。

利用しているレンタルサーバは「AJAX Extensions」だけが
インストールされているだけっぽいし。



67:65
07/08/09 11:53:46 SsgdZ+V9
>>66
binの中には、そのdllが入っています。
なのにエラーがでてしまうのです

68:nobodyさん
07/08/09 14:08:59
>>67
そのエラーは基本的に「AjaxControlToolkit.dll」の話だから
・サイトルートのbinフォルダの中にあるか?
確認してみ。

まぁ、
まさか無いだろうがAjaxControlToolkit.dllをFTPのバイナリモード
でアップロードしていなくて壊れてるとかか。




69:65
07/08/09 14:23:18 SsgdZ+V9
>>68
サイトにもありますし
ftpでアップロードしました

今夜もう一度確認してみます

70:nobodyさん
07/08/09 22:22:21
なぜソース エラーを省略するのか

71:65
07/08/10 00:06:46
解決しました。
ありがとうございました。

72:nobodyさん
07/08/10 01:09:45
なぜ解決理由を省略するのか

73:nobodyさん
07/08/10 01:26:40
せめてなんだったのか書こうぜ


74:nobodyさん
07/08/10 11:08:39
DOTNETレンタルサーバの無料サービスで実際に
AJAX Control Toolkitを利用したサイト作って確認してみた。

>>65のエラーが出るのは、
・サイトルートのbinフォルダにAjaxControlToolkit.dllが無い時
・dllをFTPのアスキーモードで送信して壊したとき
以外には確認できなかったのでASP.NETとは関係ない単純ミスだと思う。


75:65
07/08/11 00:15:29
失礼しました。

確かに単純ミスというか知識不足でした。

dllファイルは、wwwroot/の直下にあるbinフォルダに入れるということですが、
私の勘違いで、

プロジェクト名がAAAだとすると、

wwwroot/AAA/binの中にdllを入れても問題がないという認識でした。
当然、wwwroot/AAA/直下には、default.aspxがあります。

みなさま失礼いたしました。

76:nobodyさん
07/08/11 00:33:12
     ∧∧
    ヽ(・ω・)/ ズコー
   \(.\ ノ
      ̄

77:nobodyさん
07/08/12 00:02:59
な、なんだってー!!

78:nobodyさん
07/08/12 00:11:24 AGH4B/9O
htmlやcssファイル、jsファイルなどはキャッシュに残ってしまい
サーバにアップされているファイルとキャッシュにあるファイルに差があっても
キャッシュを見てしまいます。
それを避けるためにプログラムでキャッシュを削除するとかって可能なのでしょうか?

サーバの設定でファイルがキャッシュに残る有効期間を設定できますが
有効期間があってもPG側で削除するというのをやりたいのです。
例えば通常は有効期間を設定しておき、キャッシュのファイルを使ってもらうのですが
ファイルの内容を修正したりという場合は、キャッシュにあっても再度サーバからダウンロードさせたいのです。

79:nobodyさん
07/08/12 07:22:06
>>78
つうか、それってASP.NETの「Cacheクラス」とかの
話じゃなくてIEのキャッシュの話だろ。
微妙にスレ違いな感じが。

ヒント的には
ブラウザのキャッシュはファイル名ではなくてURLでキャッシュされるから
jsなどのURLにパラメータでも追加してブラウザに別物のURLと認識させる。

上記の意味が分からなければ、
・Ctrl+F5で更新してもらう
・ブラウザのキャッシュをHTTP ヘッダーで無効にし毎回ダウンロードする形にする。
とかで対応しとけば

80:nobodyさん
07/08/12 13:40:00
>78
キャッシュしててもリクエストは来て304が帰ってるんじゃないのか?
ファイルが更新されてたらキャッシュは使用されないだろ。

81:nobodyさん
07/08/12 17:56:27
TreeviewでチェックボックスをON・OFFしたときに、イベントを取るのってムリですか?

82:nobodyさん
07/08/12 20:46:16
>>80
ページが最後に表示されてから変更されたか、
(If-Modified-Since)を確認する間隔もブラウザのアルゴリズムや
設定に依存するからファイルが更新されているのにキャッシュが
使われる事もある。プロキシがあったらさらに複雑化するし。

それを解決するには、URLに変化をかけるかキャッシュを利用しない
が一番トラブルが起きにくい。

83:nobodyさん
07/08/12 21:00:44
>>81
簡単には無理だね。
javascriptでTreeviewのチェックボックスにイベント割り当てて
ASP.NETのサブミットさせるとかでうまく出来そうだけど。

84:nobodyさん
07/08/12 21:23:38 CwIQgpKd
>>79,82
ファイル名を変えなくてもパラメータを変えれば別物と判断されるんですね。

A.html?ver=1.0
A.html?ver=2.0
って別物と判断してくれるってこと?

85:nobodyさん
07/08/12 21:30:23
別物って微妙…


86:nobodyさん
07/08/12 21:45:47
>>84
まず、
実際試してキャッシュフォルダ(Temporary Internet Files)とか確認したら?
その上で、ページを表示している状態で更新してもキャッシュが利用されて
いないか確認したらいいんでない。

で、これってASP.NETでページ作らなくても静的なHTMLでも確認できるん
だから聞く前に試してみた方がいいよ。

ソースが欲しいのなら
URLリンク(yuki.silk.to)

87:nobodyさん
07/08/14 12:07:12 hGLDM3MP
質問です
環境はVS2005 C#です
masterページに動的に配置したcalendarコントロールのselectedDateイベントを
コンテンツページから取得するにはどうすればいいのでしょうか?

実現したい動作はmasterページのcalendarコントロールの日付を選択
その日付をコンテンツページで取得して選択された日の予定一覧を表示です。

88:87
07/08/14 12:11:07 hGLDM3MP
追記です。
コンテンツページで作成したcalendarコントロールをmasterページに
渡してイベントを拾う事は出来るのですが、連続して日付を選択して行くと
二回目以降に[viewstateの読み込みに失敗しました]というエラーが出ています

89:nobodyさん
07/08/14 20:28:06
>>87
問題の原因が特定できないならソースを貼るべきだと・・・

まぁ、予測だが「viewstateの読み込みに失敗しました」と言ってるのを見ると
masterページうんたらよりも動的コントロールの部分が問題の気がする。
「Page_Load」以下で動的に(viewstateがtrueの)calendarコントロール作成して無い?
その場合「Page_Init」で作成するようにして「追記」の状態で確認してみ。

90:nobodyさん
07/08/19 12:55:08
このスレの質問が、ほぼ全て教えてクンで笑った。
「教えてクン養成マニュアル」置いておきますね。
URLリンク(www.redout.net)

91:nobodyさん
07/08/19 17:31:02 PhTQfUKC
webディレクトリー以外に置いたファイルをダウンロードするには
どうすればよいでしょうか?

92:nobodyさん
07/08/19 17:42:12
>>91
URLリンク(support.microsoft.com)



93:nobodyさん
07/08/19 19:48:45 PhTQfUKC
>>92
ありがとうございます。
.NETじゃないaspでは無理なのでしょうか?
とりあえず考えた方法は、aspにアクセスした時にwebディレクトリーへ
該当ファイルをコピーしてその後コピー先にredirectという方法が
いけるかなと思いついたんですが、ダウンロード完了後にコピーファイルを
削除したいのですが、ダウンロード完了のタイミングを取得するには
何か方法ありませんでしょうか?


94:nobodyさん
07/08/19 21:30:38
>>93
いや、勘違いしてるんだが、

Response.ContentType = "application/octet-stream"
Response.WriteFile("C:\aaa.txt")
Response.End()

と言うように、「Response.WriteFile」のパスは仮想ディレクトリ
では無い物理パスを指定すればいいだけ。

で、ダウンロード完了のタイミングと言うのは取れないが、
「Response.BinaryWrite」を使えば「Response.End()」の前に
ファイルを削除出来るので送信したら削除も可能なんだが
さらに勘違いしていてここはASP.NETのスレなんだが・・・・・。

まぁ、ASPでも出来るから調べるなり該当するスレに移動するなり
した方がいいよ。


95:nobodyさん
07/08/19 22:52:06 fhtMy5hW
ArrayList list;
for(int=0;i<list.count;i++){
Label[i].Text="ラベル"+[i]
}

とaspx.csに入力した場合、
listのカウント数が100件ならば画面上にLabelを1~100件つくって、ラベル1~100を表示
listのカウント数が0件ならばaspx側でlabelを作成しないなど
画面でLabelを作成する数をcountの数によって変動させたい場合、
aspx側でどういう風に書けばいいのでしょうか?

下らない質問ですが
ググッてもよくわからなかったので教えてください

96:nobodyさん
07/08/19 23:06:46
>>95
普通なら、動的コントロールで必要な分作成する。
簡単に済ますなら、とりあえず全てのラベルのVisibleを
aspxでfalseにしておいてTextに入れるついでにtrueにする。


97:nobodyさん
07/08/19 23:40:54 fhtMy5hW
>>96
>普通なら、動的コントロールで必要な分作成する。
ありがとうございます
すいませんがいまいちよくわかりませんので具体的に教えてください

98:nobodyさん
07/08/19 23:50:39
>>97
少しは自分で調べてみるといいと思います。
URLリンク(support.microsoft.com)

そもそも、ラベルの数を「0 or 100」なのか「0 or 1 or 2 ・・・・ or 100」
なのかよく分からんので、Visibleで好きなようにコントロールするのを
お薦めします。



99:nobodyさん
07/08/20 00:07:03
カスタムコントロールのことかな
良く分からんが

100:nobodyさん
07/08/20 00:34:10
カスタムコントロールは関係ないね。
aspx.csのコードでからlist.countの分だけ
aspのラベルコントロールを(aspxの方には一切コントロールを置かず)
動的に作成すればいいだけ。

list.countの最大数が決まってるのなら、
aspx側に最大数分作っといてVisibleでコントロールしろと
>>96は言ってるだけだから。


101:nobodyさん
07/08/20 00:56:02
>>100で「関係ない」と書いてみたものの>>95を10回くらい読んで
カスタムコントロールの質問にも思えてきた。

良く分からんが

102:nobodyさん
07/08/20 18:14:22 0m18HzF/
はじめてのASP.NETなのですが、練習用のテスト環境には、IIS(Windows XP pro)が必要でしょうか?
Apacheじゃだめですよね。。みなさん、どうしてますか?

103:nobodyさん
07/08/20 18:26:19
>>102
VS2005(ASP.NET 2.0)ならIISは無くてもテストやデバッグは可能です。
URLリンク(www.microsoft.com)

一時的にサーバ環境が必要なら、
DOTNETレンタルサーバの無料サービスを利用すればOK

104:nobodyさん
07/08/20 19:00:18 0m18HzF/
まさに探していたものです。ありがとうございました^^

105:nobodyさん
07/08/20 21:55:38
>102
VisualStudio2005をインストール可能な環境はIISもインストール可能なはずなのですが。

106:nobodyさん
07/08/20 22:00:59
XP Home

107:nobodyさん
07/08/20 22:37:58
>>105どこの情報だそれはw

108:nobodyさん
07/08/20 22:43:21
>106
Homeなんかすっかり忘れてたよ。

109:nobodyさん
07/08/23 12:03:42
ASP.NET 2.0のGridViewで質問です。
ページング(AllowPaging="True" PageSize="10")を利用しているのですが、
件数が10件に満たない場合でもPagerを出力する事は可能でしょうか?




110:nobodyさん
07/08/25 20:00:12
ホントここ人居ないな。

>>109
できるよ

111:109
07/08/30 02:19:16 NTnTtLAt
>>110
その後も色々調べてみたのですが、
同じ事で悩んでいた方の質問で無理だったらしいのです。
URLリンク(vsug.jp)

よろしければ、やり方を教えていただけ無いでしょうか。

112:nobodyさん
07/08/30 18:32:05
>>111
俺もデザイン的に必要だったから、擬似的に表示するようにした

113:nobodyさん
07/08/30 20:32:17
VisualStadio2003での質問です。
テキストエリアへのHTMLタグの入力を禁止するために、
RegularExpressionValidatorを使って入力チェックを行おうとしています。

正規表現で指定した禁止文字を入力しフォーカスを外すと、
エラーメッセージを表示してくれるのですが、
サブミットボタンを押してもサブミットが発生してくれません。

ボタンでのサブミットを発生させるにはどのようにすればよろしいでしょうか?
アドバイスお願いいたします。

114:nobodyさん
07/08/31 00:34:36
DBにメールを保存しています。やりたいことはメーリングリストのWeb
アーカイブ等でよく見かけるメールのやりとりを階層表示するには
どのようにすれば良いのでしょうか?表示は件名、受信日、Fromのみ
とし、任意の件名をクリックすると、別ページでTo、Cc、件名、本文
が表示されるのをイメージしています。よろしくお願いいたします。
言語VB.NET、.NET Framework2.0です。


115:nobodyさん
07/08/31 00:34:37
>>111
無理じゃないし、擬似的にでなくても出来るよ。
GridViewのPreRenderでsender.BottomPagerRow.Visible = True

GridViewのRowDataBoundで1ページに収まる場合、
BottomPagerRow.VisibleがFalseにされるんでそれより後に動く
イベントでBottomPagerRow.VisibleをTrueすれば表示される。

まぁ、イベントの順番とかどう言う処理してるかとか意識した方がいいと思う。

116:nobodyさん
07/08/31 02:09:46
>>113
エラーなのにポストバックさせたいのか?
よく分からんが↓辺りかな。2003で試せる環境無いから適当だけど。
URLリンク(msdn2.microsoft.com)(vs.80).aspx

ってか、HtmlEncodeでHTMLタグ無効化した方が簡単だし安全だと思うが。

>>114
URLリンク(lists.samba.org)
こう言うのの事か?
単純にならDB検索して、階層は<ul><li>を入れ子で<li>の中にaタグ入れてURLに
パラメータ与えた別ページ開くように件名リンクさせる文字列作って
Literalコントロールあたりに入れればいいんじゃね。

aspのHyperLinkとかLinkButtonコントロールとかでポストバックさせて
「リスト表示」と「To、Cc、件名、本文」部分のVisibleを切り替えれば別ページも
いらないと思うが、その場合はRepeaterコントロールあたりで<ul><li>の
繰り返し処理する必要があるかな。


117:nobodyさん
07/08/31 10:08:42
>>116
返信ありがとうございます。
仕事中なので携帯から失礼します。
自分の書き方が悪かったです。
入力エラーの時にサブミット出来ないのは良いのですが、
正常値を入力した場合もサブミットが出来ず困っています。
申し訳ありませんが、よろしくお願いします。


118:nobodyさん
07/08/31 12:03:39
>>117
asp.netのコントロール(ボタン、テキスト、RegularExpressionValidator)の組み合わせなら、
普通であれば出来るはずなので別な要因が影響してる気がするが。
URLリンク(ja.gotdotnet.com)

Javascriptでボタンをdisableにしてるとか、
asp.netのコントロールではなくてHTMLのタグで書いてるとか。
イベント関係はいろいろな側面が影響するので、簡単なソースを
作って調査した方がいいよ。

119:113
07/08/31 12:06:22
>>116
jsを追った所、スクリプトライブラリのバグで、
.netFreamworkをASPに再インストールしたら正常に動く様になりました。
お騒がせしました。

120:nobodyさん
07/08/31 16:01:28
この度、ASP.NETを使い、Webアプリを作成することになりました。

しかし、いきなり問題が出て来ました・・・・。

WebアプリケーションをそのままOKを押し作成しようとすると
Webアクセス失敗と出て来てしまいます。

この場合、どのように対処したらよろしいでしょうか?


121:nobodyさん
07/08/31 21:32:28
>>120
IIS動いてて権限ちゃんと持ってるか?
つーか入門書買え

>>114
保存してるのはそれだけ?
ヘッダとか保存してないの?

122:nobodyさん
07/09/01 00:24:53 o4VEeCjw
>116
>URLリンク(lists.samba.org)

はい、上記のようなイメージです。
階層化するためには他に必要なヘッダー情報をDBに追加する必要がありそうでうす。
In-Reply-ToやReferencesを調べることになりそうですが、どのように扱えば
よいのかの参考になるわかりやすいサイトご存知でしたら教えてください。
階層化しやすくるためのクラスやライブラリがあればなお助かります。


123:nobodyさん
07/09/01 18:58:31
配列でツリー構造を作った事がないと見た

124:nobodyさん
07/09/01 21:16:37
>123

それそれ。
わざわざコーディングしなくても再利用できるフリーのクラスとかDLLとかありませんか?


125:nobodyさん
07/09/01 22:34:49
>>124
あきれてモノが言えん

126:nobodyさん
07/09/02 00:51:34
>125
そこをなんとかよろしくお願いします!

127:nobodyさん
07/09/02 01:08:55
いってるじゃねーかよ
あきれてモノも言えん


128:nobodyさん
07/09/03 20:32:29
もうちょっとマシな釣りはできんのか
↓はい次どうぞ

129:nobodyさん
07/09/08 22:51:29 XwRWsE9u
ASP.NETでサイトをプリコンパイルするときに仮想ディレクトリを指定しますが
これが実際のサイトと違う場合はどうなるのでしょうか
更新可能なサイトとしてコンパイルしても更新されなくなるだけ?

@IT:ASP.NET 2.0が変えるWebアプリ開発の世界 第1回 周辺技術が支えるASP.NET 2.0の進化
URLリンク(www.atmarkit.co.jp)

>仮想ディレクトリ名を変更してしまうと、アプリケーション自体が正常に動作しなくなってしまう。
普通に動いてしまっているようなのですが、このあたりの詳細な記述があるサイトはないでしょうか?

インストーラの実行時に仮想ディレクトリの名前を確定したく簡単な方法を探しています。


130:nobodyさん
07/09/10 21:02:18 slz4gROC
環境ASP.NET2.0、VB.NET、SQL Server 2003です。
select count(*) from table の結果を、ラベルに出力したいのですが
サンプルありませんか?できれば .aspx.vb 側でコードを書くのでなく
.aspx側(ただし、<script></script>の中は不可)で出力するコードを書きたい。
書く方法があるのか、そういう方法ではNGなのかよくわかりません。
サンプルのアクセス先でもよいので教えてください。
よろしくお願いします。

131:nobodyさん
07/09/10 21:42:17
>>130
インラインコードモデルで書きたいってこと?

URLリンク(www.microsoft.com)

132:nobodyさん
07/09/10 21:52:18
>131
どうもインラインコードモデルじゃむりっぽいかもしれないので、コードビハインド可で質問
しなおします。
GridViewのサンプルはたくさんあるので書き方がわかるんですが
select count(*) from Tablexxx の結果をラベルに代入するサンプルが見つからない。
どなたかご存知でしたら教えて。

133:nobodyさん
07/09/10 22:02:34
>>130
SQL Server 2003とは?

134:nobodyさん
07/09/10 22:08:03
>133
すみません、SQL Server 2000 でした。


135:nobodyさん
07/09/10 23:55:16
結果をラベルに代入とは?

136:nobodyさん
07/09/11 01:49:13
Labelコントロールで表示したいんじゃね

137:nobodyさん
07/09/11 13:42:38
GridViewで表示できるならLabelでもなんでも表示できるだろと。
どうせLabelにはデータソース指定がないからGridViewみたいにコーディングレスじゃ割り振れないってだけだろ。

普通にSQL発行して戻り値でSELECT結果返す関数作って
その戻り値をLabelに入れるなりなんなりすればいいだけ。

Label1.Text = GetSqlquery();

でいいだろ。

138:nobodyさん
07/09/11 20:34:07 jV5pYbSS
>137
サンキュー!
そうでした、単純にクエリーの実行結果を得る方法さえわかれば
どうってことないことでした。


139:nobodyさん
07/09/12 16:40:18
[IIS-5.0][Framework 1.1][VB.Net2003]
でwebアプリケーションを開発しています

現在、モバイルWebアプリケーションを作成しているのですが
状態管理のセッションキーがURLに埋め込まれますが
このセッションキーの埋め込み位置を変更することは
できないでしょうか?

例:
URLリンク(www.)<)○○○.com/mobile/index.aspx?session=セッションID
という感じにできませんか?

おわかりの方がおられればぜひご教示ください。

140:nobodyさん
07/09/12 23:00:57
ASP.NET2.0、Ajax Extensionsを使用しています。
Panelの中にUpdatepanel、Updatepanelの中で<div> </div>で囲んだ
Gridviewコントロールを配置しています。Gridviewで表示した表は
一定間隔で自動更新表示(タイマー使用)しています。
ブラウザ側のスクロールバー位置はMaintainScrollPositionOnPostback="true"
により同じ位置を保持可能ですが、ヘッダー固定したGridView側のスクロール
バー位置が上に戻ってしまいます。内部のスクロールバー位置ももとの位置を
保持させるにはどのようなコードを追加すればよいのでしょうか。
ご存知の方、おしえてください。


141:nobodyさん
07/09/12 23:52:58
>>129
ルート演算子「~」とかがおかしくなった気がする。
MSDNあたりでこれ関係の記述を見た記憶が。

>>139
自分でセッションの代わりを作らない限り無理だと思う。
で、絶対パスでセッションが切れるとかリダイレクトとかの問題なら
解決策はあるが、見た目の問題とかならしらね。

>>140
MaintainScrollPositionOnPostback="true"で作成される
JavaScriptと同じ事をやればいい。

Hidden項目2つ(x,y)用意してGridViewを囲んでるdivの(javascriptの)
onscrollイベントで縦・横位置を記憶するJavascriptを作る
で、次に縦・横位置を復元するjavascriptを用意する。

ここまでは、UpdatePanelだろうが通常のポストバックだろうが同じ。
次に通常のポストバックなら縦・横位置を復元するjavascriptを
Page.ClientScript.RegisterStartupScriptで呼べばいいが、
UpdatePanelの場合は非同期通信で作成されるJavascriptの
endRequestをフックするか、ASP.NET側のScriptManager.RegisterStartupScript
あたりで非同期通信後に呼ぶ。

まぁ、GridViewが複数同一ページ内にある場合とか考えても、
Hidden項目がその分必要になるから、スクロールしているdivを
カスタムコントロール化するべきだと思うが。


ScriptManager.RegisterStartupScript

142:nobodyさん
07/09/13 23:05:53 f7p5yovk
Visual Studio 2005でASP.NET使ってWebアプリ作る時って、
Webサイトプロジェクトと、Webアプリケーションプロジェクトの
どっちで作るほうがいいの?入門書見たらWebサイトプロジェクトで
説明してるものばかりだけど…

143:nobodyさん
07/09/14 01:00:26
>141

ありがとう。
divの(javascriptの)
<div onscroll=..... てところが書けない。
onscrollという属性が予約語でないのか、エラーになります。
どのようにすればよいのでしょうか?


144:nobodyさん
07/09/14 02:35:05 CiMbiaO2
ASP.NETのBinフォルダに.NETアセンブリ以外を入れたら何か問題ありますでしょうか?
Cで作成したネイティブのDLLを参照する必要があり、それを入れたいです。
他にもBinにログファイルを作成する.NETアセンブリもあったりするのですが問題ありますでしょうか?

(ASP.NETアプリからはそのCのDLLのラッパを呼び出している。ラッパはBinフォルダの中にある。)
サイト
 Bin
  native.dll
  wrapper.dll




145:nobodyさん
07/09/14 02:52:17
>Binにログファイルを作成する
そいつはまずい。
まじで。


146:nobodyさん
07/09/14 10:10:05
>>143
それ、XHTMLに準拠しているかの検証エラーなだけなので
気にしないで進めろ。

XHTMLに準拠が気になるなら、

・Javascriptでdivのイベントに処理を割り付ける
 document.getElementById(???).onscroll = function ・・・
・divにrunat="server"(Panelコントロールでもいい)を付けて
 ASP.NETコントロールにしてAttributes("onscroll")でJavaScript
 を文字列で書き込む。

好きな方でやればVSのデザイン時にXHTML検証でエラーは出ない。


147:nobodyさん
07/09/14 22:48:45
>146
んーー、非常に勉強になりました。
アドバイスの通り試行錯誤してみます。
重ね重ね本当にありがとうございました!!


148:nobodyさん
07/09/14 23:43:51
>>147
スクロールバーを表示している<div>をUpdatePanelのすぐ外に
置いてスクロールの内部を非同期通信させる方法で対応できる
ならそれが簡単かも。

UpdateProgressを使ってたり、ポストバックの更新時、UpdatePanelの入れ子とかで
内部表示の幅がが一時的に小さくなったり、divが再描画されたりすれば
スクロール位置は戻るので現在の処理が絡むので分からんけど。
まぁ、>>141の内容と組合せるとかすれば出来ない事は無いだろうけど。



149:nobodyさん
07/09/17 03:52:15
<script>タグの中で<%= =>がマークアップされないのって、何とかならないのかな
一瞬動かないものなのかと思ってしまいました。 まさかMS非推奨、とかじゃないですよね?

150:nobodyさん
07/09/17 08:48:12
>>149
><%= =>

・・・え?

151:nobodyさん
07/09/17 09:30:35
>>149
<%= =>って<% %> レンダリング ブロックのことか?
普通に<script type="text/javascript">alert('<%="aaa" %>');</script>で出力されるが。
よくわからん。


152:nobodyさん
07/09/17 15:27:31
VS上で強調表示されないってことです。細かくてすいません。。


153:nobodyさん
07/09/24 16:52:06
Imports Oracle.DataAccess.Client

Public Shared Function OracleRead(ByVal wSql As String) As Object
cnn = New OracleConnection
cnn.ConnectionString = "hogehoge"
cnn.Open()
cmd = New OracleCommand
cmd.Connection = cnn
cmd.CommandType = CommandType.Text
cmd.CommandText = wSql
OracleRead = cmd.ExecuteReader
End Function

こんな感じの繋ぎ方で、Oracleに接続して結果セットを得ているのですが、この結果セットの
フィールド名はこのオブジェクトから得ることができるのでしょうか?

Dynasetで結果を得ていたときは 結果セット.FieldName(i).ToString で得られていました。
同じようなプロパティはあるのでしょうか?


154:nobodyさん
07/09/24 22:53:03
>>153
そのreturnのObjectを素直にOracleDataReaderに
してるのならGetNameで。
DataAdapterで変換してるのなら変換後の型の
メンバをMSDNで調べてください。

155:nobodyさん
07/09/25 16:35:24
ASPの質問というよりwebサービスに対する質問なんですが.
VS2005でクライアントの「WindowsFormアプリ」と「Asp.NETWebサービス」を(ともにC#)
共存させるソリューションを作っているのですが,

クライアントの参照設定->右クリック->Web参照の追加
で「Asp.NETWebサービス」を追加したのですが,
[WebMethod]で指定した関数を呼び出すことができません.
WebServiceのクラスがMySeriviceの場合

MyService ms = new MyService();
はエラーを吐かずに実行できるのに.
string str = ms.HelloWorld();
は次のエラーと警告を出します.
・無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。
・WebServiceBindingAttribute が プロキシ クラスで必要です。

WebServiceBindingAttribute をどのように作成すればいいでしょうか

156:nobodyさん
07/09/25 18:01:48
>>155
単なるコンパイルエラーだと思うけど。
HelloWorldの中身の"("付近を見直してみれば。

157:155
07/09/25 18:24:50
>>156 さん 反応どうもです

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

これがWebMethodのコピペです,
間違ってはないと思うのですが

MyServiceを参照する際,
MyS まで入力して「Ctrl+Space」を押すと候補一覧に「MyService」が表示されるのですが.

MyService ms = new MyService();
をした後
m まで入力して候補を探しても 「ms」 は見つかりませんでした.
もちろん ms まで入力して「.」を押してもメソッド一覧が表示されませ.

しかしオブジェクトブラウザでMyServiceを見たらHelloWorldメソッドが登録されているので,
なんだかもうわからない状態です...

158:nobodyさん
07/09/25 20:54:14
URLリンク(localhost) の場合
localhost.MyService ms = new localhost.MyService(); のように指定した気が

159:153
07/09/25 21:00:40
>>154
サンクスです。
GetNameで取れました。


160:155
07/09/25 21:24:54
>>158 さん はんのうありがとうです.

usingを指定して,すでに名前空間は解決しているつもりでした.

名前空間と言えば
[WebService(Namespace = "URLリンク(kaigen.org))]
WebServiceで記述されているこれは使用するのでしょうか?

161:155
07/09/26 03:15:18
自己解決?しました

WebServiceクラスを呼び出しているところを
普通のクラスファイルじゃなくて,
Windowsフォームテンプレートを用いで作成したクラスからなら
呼び出せることがわかりました.

原因は不明ですが,とりあえずこれで動くので,
これで作成しようと思います.


162:nobodyさん
07/09/26 15:32:27
継承しているクラスくらい見ろよな

163:nobodyさん
07/09/26 21:02:25 yYWQHXI+
次のようなイメージでTreeViewのノードを動的に追加できるASP.NET2.0 Webアプリを
作成したいと思っています(使用言語C#)。

  ブラウザの左側にTreeviewを表示(例menu.aspx)し、上位ノードを右クリック
  して「新規作成」をクリックすると、新たなノードを作成するために必要な
  パラメタの入力を促すウィザードまたは入力可能なダイアログを表示する。
  新たなノードを作成する際にパラメタとして、ノード名、DB名、Table名程度を
  入力し(それ以外はシステムで決まっている値とする)、サブノードが出来上がる
  というかんじです。右側はGridViewでDBのテーブルを表示します。

左側(menu.aspx)をどうすればよいか悩んでいます。
参考になるサイトがあれば教えてください。またご存知であればご教授ください。
よろしくお願いします。


164:nobodyさん
07/09/26 22:57:49
>>163
技術が無いんなら「自分でできる」所までまずは
作りましょう。それから出来ない点のみを質問しましょう。

改造は必要だがこの辺を参考にしてください。
URLリンク(www.codeproject.com)

自作するなら、Treeviewを表示→(右クリック→メニュ)→(ダイアログ)→ポストバック
→Treeviewを更新で括弧以外簡単だと思うが。

リンクの右クリックメニューはライブラリあたりで、右クリック時にノード情報退避して、
ダイアログは別ウインドウかレイヤ(<div>タグにstyleでPOSITION:absolute)あたりで
表示させれば良いと思います。

面倒なら商用が色々とありますので購入してください。
URLリンク(www.componentsource.co.jp)



165:nobodyさん
07/09/26 23:27:43
>164
うわっ!スゴイ!!十分に参考になります。
codeproject.comは知っていましたが、辿り着けなかった・・・。
商用のものはすごいですね。資金がないため購入はできませんが
とても参考になります。本当にありがとうございました。


166:nobodyさん
07/09/27 05:38:58 7u8fuvQl
テキストボックス内でキーボードのEnterを押したら、ボタンが押下されたようにしたいです。

テキストボックスのonkeypressでEnterを捕捉し、ボタンが押下されたときのサーバ側のイベントを呼ぶように
クライアントスクリプトを書こうと思ったのですが、よく分かりません。

- サーバ側のイベント
void btnExecute(object sender, EventArgs e){
  //proc
}
- テキストボックスでEnerキーが押されたときにコントロールを指定してポストバックする
<asp:TextBox 。。。 onkeypress="if(エンターキーが押された)__doPostBack('btnExecute');"></asp:TextBox>

のようにすればいいのかな。と思ったのですがうまくいきませんでした。
クライアントコールバックではなく、単純にボタンを押されたときと同じにしたいのですが
どのようにすればよいのでしょうか?


167:nobodyさん
07/09/27 10:41:16
>>166
<asp:Button>はUseSubmitBehavior="False"でない時、
HTML上は<input type="submit">で出力されますがこの場合
他のコントロールと異なり直接「__doPostBack」は呼ばれずに
formのSu・・・・・・・・・めんどくせ。

興味があるんなら自分で調べてみてください。

で、UseSubmitBehavior="False"にして__doPostBackするなり
ASP.NETのjavascriptのイベント処理で解決する事も可能だが
一番簡単なのはコントロールを直接クリックすればいいだけ。

.Net側
text.Attributes("onkeypress") に "aaa('"+ Button.ClientID "+)"

javascript
function aaa(objName) {
if(エンターキーが押された) document.getElementById(objName).click();
}

.Net側はHTML上のボタンのID名を取得の為に処理しているだけなので、
aspxの<asp:TextBox onkeypress="ここ"だけに入力したいとか言われそうだが
それも可能なので調べてみてください。


168:166
07/09/27 22:07:24 7u8fuvQl
詳細な説明ありがとうございます。
ClientID=エレメントのIDなページ構成なので
asp:TextBoxに
onkeypress="if(エンターキーが押された) document.getElementById(''btnExecute').click();"
で対応できました。


サーバ側でプログラムでJavaScriptを書くのってTry&Errorし辛くて不便ですよね
スクリプト内部もタイプセーフ(JavaScriptセーフ?)に書ければいいのに。と思った。


169:nobodyさん
07/10/02 00:54:30
ASP.net2.0+AJAX.net2.0+C#で開発しています。
TreeViewについて質問させてください。

[質問内容]
UpdatePanel内にTreeViewを配置した時にTreeViewのPopulateイベント
で同一UpdatePanel内の別のコントロールに値をセットできません。
ViewStateも利用できない状態です。

他に、Populateイベントを有効にするとTreeNode以外のボタン押下時
イベントも同時に動いてしまうのも悩みです。

どなたか同じような問題を解決した方がいましたらご教示ください。

宜しくおねがいいたします。

170:nobodyさん
07/10/02 20:58:52
>>169
同一UpdatePanel内のPopulateイベントで
Me.TextBox1.Text = e.Node.Text
で試してみたがセットできるんだが。

まぁ、そもそも
URLリンク(cs.gogo-asp.net)
と言うように正確な情報も無ければ、解決には様々な要因が絡むパターンなので
関連する部分のソースでも無い限り答えるのは無理だけどね。
リンク先の対応策をよく理解してから自分で調べるといいと思います。

171:nobodyさん
07/10/02 23:20:01
>>170
ありがとうございます。

単純な事でしたが、EnableClientScriptがtrueになっている事が原因でした。

EnableClientScriptをfalseにする事でコントロールに値をセットする事や
ViewStateに値をセットする事ができました。

今回はPopulateイベントで別のコントロールに値をセットするという仕様
でしたが、一度展開したノードではPopulateイベントが発生しなく
なるため、2度目以降のノード選択時に別のコントロールに値をセット
できなくなってしまったので、Expandedイベントを利用しました。

PopulateイベントからノードのPopulateOnDemandプロパティにtrueを
設定しても一度展開された扱いになってしまい現象変わらず。
(該当ノードを削除して再度同じノードを作成すればいいかも知れま
せんが次にコードを見た人がつら過ぎるコードになるので実装せず)

172:nobodyさん
07/10/04 14:17:51 HVPnYgkb
PHPしかやったことないのですがASPをやろうと思ってます
PHPユーザにお勧めの言語があれば教えてください


UNIXが優位だったからPHPをはじめたのにいつのまにかWINDOWSに抜かれてるなんてorz

173:nobodyさん
07/10/04 17:55:01
PHPしかやったことが無い とか関係あるか分からないけど
ASP.NETなら C#とJavaScriptやっとけばいいんじゃない?

174:nobodyさん
07/10/04 22:00:36
C#が解説とサンプル多くていいと思うよ。
VB.NETも同じくらい多いけど、言語的にはC#のほうがPHPに近い。

175:nobodyさん
07/10/05 05:43:34
PHP ≒ Java ≒ C♯

VB糞

176:172
07/10/05 15:38:56
レスおそくなってすみません

>>173-175
レスどうもありがとうございます
C#のほうが近いとのことなのでC#でいきたいと思います
帰ったら開発環境とIISインストールして早速遊ぼうと思います

177:nobodyさん
07/10/06 03:15:56
パラメータソースとしてWebUserControlのプロパティを使いたいんだけど
バインド画面のリストに表示するようにするには、どうしたらいい?
属性?それともインターフェイス?

178:nobodyさん
07/10/06 11:40:13
>>177
質問の意図が「プロパティを使いたい」のか「リストに表示したい」のか
分からんけどControlParameterのPropertyNameで選択したリストに
表示されなくても直接UserControlで作成したプロパティ名を入力すれば
使えたはず。

リストに表示したいと言うのも出来たはず。
おれは動的にControlParameterを発生させるので、ど忘れして思い出せない。

って、事でこのスレの詳しい人に任せます。


179:177
07/10/06 22:11:06
>178
thxです。コレ手書きOKなのね。
さらにリストから選択できれば言うことないので、誰かヒントお願いします。

ちなみに Control にしたとき、下記のようにコントロール名が2行づつ表示されるのは常識なんですか?

GridView1
GridView1


180:nobodyさん
07/10/06 23:14:35
WebUserControlのイベントってデザイナで指定できないのですか?

181:nobodyさん
07/10/07 00:39:00
だれかエスパーを

182:nobodyさん
07/10/07 02:05:08
>>180
プロパティウィンドウの使い方が分かってないんじぇね?
プロパティウィンドウ最上部の雷マークで切り替えてイベント追加できるから

183:nobodyさん
07/10/07 23:25:26
WebUserControl使ったことあるやつなら >>180 が言ってることわかるだろ。
ちなみにC#な。

184:nobodyさん
07/10/07 23:30:53
わかるんなら答えてやれよw

185:180
07/10/07 23:47:37
>>181
>>182
説明がわるくてすみません。
自作のWebUserControlをWebFormに貼り付けると、イベント・プロパティとも
プロパティウィンドウに表示されません。(雷ボタンも表示されない)
ちゃんとpublicプロパティやイベントは書いてます。

>>183
ということはC#ではできないのですかね?

186:nobodyさん
07/10/08 03:27:19
ああ、ユーザーコントロールの枠で選択されちゃって、個々のコントロールが操作できないやつね。
あれはだな、・・・

187:nobodyさん
07/10/08 16:21:04
↑なんか概念的に間違ってるぞおまえ

188:nobodyさん
07/10/13 12:20:47 cIDXI8N9
初歩的な箇所で申し訳ないのですが質問させてください

ASP1.0でフォーム認証を試そうとして↓をWeb.Configに

<authentication mode="Forms" >
<forms loginUrl = "login.aspx" />
</authentication>

<location path="checkout.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>

を追加したのですが”構成セクションlocationを認識できません”とエラーになります
何が原因でしょうか

189:nobodyさん
07/10/13 15:53:32
>>188
単純に、locationが認識できないと言う時のエラーだから、
location要素の書く位置間違ってるんじゃねーの?
configurationの直下に書いてるか?

とりあえずは、Web.Configを省略せずに書いてもらわんと分からん。


190:nobodyさん
07/10/13 20:41:18 cIDXI8N9
>>189
Web.ConfigのXML自体あまり理解できていないと思うので答えが曖昧かもしれませんが
一応<configuration>のステートメント内には収まっていると思います

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>

<compilation defaultLanguage="c#" debug="true" />

<customErrors mode="RemoteOnly" />

<authentication mode="Forms" >
<forms loginUrl = "login.aspx" />
</authentication>

<location path="checkout.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>

191:190続き
07/10/13 20:45:39 cIDXI8N9
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>

<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;user id=sa;password="
cookieless="false"
timeout="20"
/>

<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
</configuration>

192:188
07/10/13 20:53:54 cIDXI8N9
>>189
できました!
本当にconfiguration”直下”なんですね
ご教示有難うございます。
どちらにしても、このXML自体あまり理解できていないようなので
勉強しなおしてみます。

193:nobodyさん
07/10/13 21:04:39
>>190
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.web>
  <compilation defaultLanguage="c#" debug="true" />
  <customErrors mode="RemoteOnly" />

  <authentication mode="Forms" >
    <forms loginUrl = "login.aspx" />
  </authentication>
  <trace ・・・ />
  <sessionState ・・・ />
  <globalization ・・・ />
 </system.web>

 <location path="checkout.aspx">
  <system.web>
   <authorization>
     <deny users="?" />
   </authorization>
  </system.web>
 </location>
</configuration>

VS2005だから.net2.0でしか確認できんけど、で、いけると思う。

locationの配下に無い<system.web>はサイトルートを含む全ての
ファイルとフォルダに対する指定だから<location path="ルートパス">が
指定されてる意味になるから、その中に<locationが入れ子されると
意味不明な指定になる。



194:nobodyさん
07/10/13 21:06:25
更新していなくて余計なレスしちまった。



195:195
07/10/15 04:26:21 1vOjoM00
環境は以下です。
VS2005
VB.net
ASP2.0(だと思います)

なぜか*.aspxの他に自分で追加した*.vb内のClass内で"テスト"のように「""」で括った文字列が
文字化けの状態で変数に格納されてしまい困っています。

ファイル名:Class1.vb
Imports Microsoft.VisualBasic
Public Class Class1
Public Function func() As String
Return "テスト"
End Function
End Class

ファイル名:default.aspx
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim s As String
s = "テスト"
Diagnostics.Debug.WriteLine(s)
Dim cls As Class1 = New Class1
Diagnostics.Debug.WriteLine(cls.func())
End Sub

出力内容
テスト
?e?X?g

196:195
07/10/15 04:27:11 1vOjoM00
「?e?X?g」が文字化けでなぜか「テスト」と表示されないので悩んでいます。

前提条件としてDBにアクセスするためDataSet1.xsdがプロジェクトに追加してあります
これに付随してweb.configに以下の内容を追加してあります
追加内容:<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/>
理由:DataSet1.xsdを作成するとコンパイルエラーが発生したため
コンパイルエラーの内容:エラー 1 入力 xml ファイルの内容を DataSet に変換できません。名前の先頭に '0' (16 進数値 0x30) を使用することはできません。 行 32、位置 168 です。 C:\Users\*****

プロジェクトからDataSet1.xsdを削除し、関連コードを削除し実行すると文字化けはなくなりますが、
DBを使用するためそれはできないです。

また、default.aspx内にClass1の定義を貼り付けたら問題なく表示されますが、
なぜか別ファイルに分離(Class1.vb)すると文字化けします。

まとめますと上記のサンプルコードは単体では再現せず、
DataSet1.xsdにテーブル定義を追加し、コンパイルエラー回避のためglobalizationを追加すると再現するようになります。
この状態ですと自分で追加した*.vb内でDim s As String="テスト"をすると
sに文字化けしたものが格納されます。

1週間ほど悩みましたが全く進展がなく暗礁に乗り上げました。
ご存じの方お教えいただけませんか?
よろしくお願いします。

197:nobodyさん
07/10/15 06:28:13
fileEncoding="shift_jis" にすると解消するというオチでは。。。
globalization requestEncoding="utf-8" でググったら最初に出て来た。

198:nobodyさん
07/10/15 12:31:20
>>195
なにも理解せずにデータセット「.xsd」の不具合対策を入れたんだろうな。
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/>

VB.NETの場合、.aspxや.aspx.vbは(デフォルトなら)HTMLをUTF-8で出力する
関係上、文字コード「UTF-8 BOM付き」で保存されるんだが、「新しい項目の追加-クラス」で
追加された「Class1.vb」は、文字コード「Shift-JIS」で保存されます。
(「新しい項目の追加-クラス」の「Shift-JIS」はVSのバグっぽいが)

このように.aspx.vb「UTF-8 BOM付き」、Class1.vb「Shift-JIS」と文字コードが混在していても
通常は動作する時に文字コードを自動判別するので問題は起きないのですが、
<globalization fileEncoding="utf-8"/>を追加すると、プロジェクト内の全てのファイルを「utf-8」
で読もうとする為、当然「Shift-JIS」で保存されているClass1.vbの2バイト文字は化けます。

余談だが、レコードセット「.xsd」の不具合の方もこれに若干似ていて、「UTF-8 BOM無し」で保存
されるから日本語のフィールドやテーブル名があると起きる。

上記から導き出せる解決策

1.globalizationで「.xsd」の不具合修正を追加したまま「Class1.vb」を「UTF-8 BOM付き」にする。
2.globalizationを削除して、「.xsd」を「UTF-8 BOM付き」で保存する。
3.globalizationを削除して、「.xsd」と「Class1.vb」を「UTF-8 BOM付き」で保存する。

他にも方法はあるがこの中から選べばいい。
(「.xsd」はShift-JISで保存でも解決したり)

文字コードの変更方法は、テキストエディタでも良いしVSからなら
該当ファイルを開いて「ファイル-名前をつけて保存-保存ボタン右の▼-エンコードつきで保存-エンコード」


199:195
07/10/16 21:26:18
>>197
>>198
おかげさまで無事解決しました。
対処としては
>2.globalizationを削除して、「.xsd」を「UTF-8 BOM付き」で保存する。
これを選択しました。
>3.globalizationを削除して、「.xsd」と「Class1.vb」を「UTF-8 BOM付き」で保存する。
こちらについては
globalzationを消し去ったことでClass1.vbのShift-JISを自動認識して読み込んでくれているから
だと思うのですが特にUTF-8 BOM付きに変換しなくともく正常に動作しました。
ありがとうございました。


200:nobodyさん
07/10/17 00:16:33
>>199
悪い行数制限に引っかかりそうだったので省略したが、なんでわざわざ「3.」の
選択肢も書いたかと言うと、C#だと「新しい項目の追加-クラス」で作成したファ
イルはデフォルトで「UTF-8 BOM付き」になる。
マイクロソフトが不具合と認めている報告は今の所見つからないが。
レコードセット「.xsd」の「UTF-8 BOM無し」はC#でもVBでも起きる問題をマイクロ
ソフトは不具合と考えているぽい。

で、ここから考えるにVSの動きとしては基本的にファイルを「UTF-8 BOM付き」で
保存する動きなので、そう言った面を気にするならって事で「3.」を追加した。

とりあえず動作する事が目的なら
>globalzationを消し去ったことでClass1.vbのShift-JISを自動認識して読み込んでくれているから
>だと思うのですが特にUTF-8 BOM付きに変換しなくともく正常に動作しました。
この理解で問題ないと思います。


201:195
07/10/17 01:45:19
>>200
なるほど。
なんで
>3.globalizationを削除して、「.xsd」と「Class1.vb」を「UTF-8 BOM付き」で保存する。
の選択肢がわざわざ用意されているのかと疑問に思っていました。
要約すると
・vbで「新しい項目の追加-クラス」で作成されたファイルのエンコードが既定が「Shift-JIS」であり
C#の場合は「UTF-8 BOM付き」であること
・今後の流れとしてはおそらく既定が「UTF-8 BOM付き」で保存する流れであることから
 「UTF-8 BOM付き」で保存するのも吉
ということですね。
現在わかっている不明な動作としては
・VBとC#で「新しい項目の追加-クラス」での保存形式が違う
・「.xsd」が「UTF-8 BOM無し」で保存される
であり、上の2つは不具合、もしくは不具合に近い動作であり、なぜかを追求する必要はなく、
とりあえず>>199の方法で対処だけしておけばよい。
ですね。
非常に参考になりました。
間違っている部分がありましたら指摘していただけるとありがたいです。

202:nobodyさん
07/10/17 13:59:27 ZhgS5P3I
 検索エンジンの検索窓みたいに(キーワードの間に空白を入れてAND検索とか)という機能を持つ検索ボックスを使いたいんですけど、この場合、自前でキーワードを解析してSQL文を組みてる必要がありますか?

203:nobodyさん
07/10/17 16:28:04
>>201
その認識で良いと思います。
マイクロソフトの正式な回答では無いのでどれを
選択するかは自由ですが。

>>202
結論から言えば自前だね。

そもそも、検索エンジンの空白でAND検索って形態素解析の
ほんの一概念でしかないのに「とか」と言われても。

とりあえず、空白でAND限定なら入力された文字列を
Split関数で配列化してForEachで回して各文字列の頭に「AND フィールド名=」
を付加してwhere作ればすぐ出来ると思う。


204:195
07/10/18 01:37:25
>>203
了解です、
細かな解説ありがとうございました。


205:nobodyさん
07/10/18 21:03:24
ASP.NET2.0, VisualStadio2005,C# or VB.NETを使ってます。
GridViewでデータを表示し、編集ボタンクリック。
編集モードで更新ボタンクリックして更新中にエラーが発生したら
その趣旨メッセージとOKボタンのダイアログボックスを表示。
意外とサンプルが見つからず。どなたか教えてください。


206:nobodyさん
07/10/18 22:25:05
サーバーサイドで動いてるのにダイアログボックスて。
JavaScriptとかでポーリングするつもりかい。

207:nobodyさん
07/10/18 23:01:54
>>205
if (エラー時)
{
page.ClientScript.RegisterStartupScript(page.GetType(),"ErrorAlert", "alert('エラー');", true);
}
で処理を抜けて、画面に描写を行わせればJavascriptが動いてメッセージボックスが
表示される。



208:nobodyさん
07/10/19 20:42:03
>207
ありがとう。
おかげさまで調べやすくなりました。
そのままでは動かなかったけど、次のように書いたらOKとなりました。

ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "ErrorAlert", "window.alert('エラーだぴょん!');", True)



209:nobodyさん
07/10/19 21:53:35
>>208
悪い。間違ってた。
C# ClientScript.RegisterStartupScript(this.GetType(), "ErrorAlert", "alert('エラー');", true);
VB ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", "alert('エラー');", True)
だったわ。

つうか、ScriptManagerってAjax利用してるのか?
ついでだから教えとくけど、ScriptManagerはAjaxのScriptManagerコントロール
がある時しか認識しないぞ。

動作的には簡単に言うと
ScriptManager.RegisterStartupScriptはajaxの非同期通信直後とページ描写時に
javascriptが吐き出される。
ClientScript.RegisterStartupScriptはページ描写時にjavascriptが吐き出される。
って感じだからタイミングによって使い分ける必要がある。
詳しくは自分で調べてみるといいよ。



Ajax非同期通信後に


210:nobodyさん
07/10/20 16:11:30 bogh6jgR
スタンドアロン環境でAP開発して、ファイルコピーにて
アプリケーションを配置したのですが、初回起動時毎回
すごい時間がかかります。(=コンパイルされている様子)
どの点を見直せばよろしいでしょうか?
2003Server ASP.NET2.0

211:nobodyさん
07/10/20 17:30:47
事前コンパイル

212:nobodyさん
07/10/20 18:59:16
>>210
ASP.NET コンパイルの概要
URLリンク(msdn2.microsoft.com)(VS.80).aspx

自動コンパイル(動的コンパイル)
メリット:
 ソースをコピーすればいい。
 ソースを配布先でテキストエディタも修正できる。
デメリット:
 初めて要求時にコンパイルされる時間が掛かる。

埋め込み先コンパイル
メリット:
 ソースをコピーすればいい。
 ソースを配布先でテキストエディタも修正できる。
 初めて要求時にコンパイルされる時間が掛からない。
デメリット:
 ソースの一部でも修正したらコマンドラインで動的コンパイル時に発生するコンパイルと同じコンパイルを実行しなければならない。

事前コンパイル
(更新不可能な完全プリコンパイル・更新可能なプリコンパイル)
メリット:
 初めて要求時にコンパイルされる時間が掛からない。
 ソースを隠蔽する事が可能。
 全ての画面を単一のDLLにするなどが可能。
 更新可能なプリコンパイルなら、aspx、.ascxのみ変更可能。
デメリット:
 windowsアプリの様にソースと配布用の実行ファイルを分けて管理などを考える必要がある。

簡単な説明するとこんな感じ。
詳細は上のURLで理解したうえで、自分で選んでください。


213:nobodyさん
07/10/20 19:51:27
しかし起動時にすごい処理してるってオチがあったりして…


214:nobodyさん
07/10/20 21:46:20 bogh6jgR
>>212
参考になりました。ありがとうございます!!!

215:nobodyさん
07/10/20 22:07:26
>>214
>211にも何か一言くらい...

216:nobodyさん
07/10/20 22:10:10 jIqTRPXl
ASPはわからない部分が多いので教えてください。
こういうのを作っています。
・フレームで画面を上下に分割
・上部に検索条件を指定するための入力フォームと検索ボタン
・下部にObjectDataSourceとGridView
上部で指定された条件を元にSQLのWHERE文を作成し、下部に渡したいと思っています。
こういう時はどういう処理が一般的でしょうか?
今のところ考えているのが上部で作成したWHERE文をセッション変数に格納し、
下部のDataSourceのSelectedMethodで指定しているメソッドの中で
If セッション変数 <> String.Empty Then
  sql = sql & "WHERE" & Chr(13)
  ~ここで条件を追加~
End If
みたいにして条件を追加しようと思っています。
これが動作するかどうかは試せばすぐわかると思うのですが
一般的な処理の方法がこんな感じで合っているか気になります。
いかがでしょうか?



217:nobodyさん
07/10/21 01:32:40
フレームなんか使うな。


218:nobodyさん
07/10/21 01:52:59 1pk3RmdZ
せっかくのPostbackなんだから単一画面でしょう

219:nobodyさん
07/10/21 10:05:16
フレーム使わないでテーブルにぶち込むとか、<hr>で区切るとか汁!


220:216
07/10/22 00:25:54
>>217-219
とりあえず今回は上記の方法を採用しました。
動作としては今のところ問題ないようですのでこのままいきます。
ちなみになぜフレームを採用したかというと画面上部のフレームは
検索条件を指定する画面を表示するのですが
簡易検索条件入力フォームと詳細検索画面を切り替え、且つ、
下部は共通したGridViewを使用したかったためです。
ありがとうございました。

221:nobodyさん
07/10/22 01:51:40
今回は仕方無いにしても,今度はフレームを利用せずに
それらを実現できるように成長することを期待。

222:216
07/10/22 03:32:30
>>221
ケースバイケースケースで
上部のフレームの中身を差し替えることで
検索条件の指定方法を変えたいと思いフレームを採用しましたが、
そこまでフレームを非推奨なのにはなにかわけがあったりしますか?
今回は切り替えと、常に上部に表示させておきたいということで
フレームを採用しましたがそこまで否定派が多いとちょっと気になります。

223:nobodyさん
07/10/22 13:18:05
>>222
フレームについては宗教論争的な部分もあるんで他人から
強制させられるよりも自分で見つけたほうがいいよ。

とは言っても、あれなんで簡単に
・W3Cはframeに対して否定的な動き。
・1つのURIに1つの情報と言うのが理想的である。
・ユーザビリティ的にも、セキュリティ的にも低下する恐れがある。
URLリンク(java-house.jp)
・SEO関係の話
・完全ではないにしても(i)frameのメリットである「情報の部分再描画」はajaxで「スクロールによる表示箇所の分離」はcssで出来る。

とか色々、どれも否定する決定的な要因は無いのだが利用している側は大抵が「なんとなく」で使ってる場合が
多いので否定的な意見されるのが現実です。個人的には、上記のような事を理解した上で、デメリットを解決したり
無視できる状況を作り「フレームを使う」事によってしか生まれないメリットを追求する意思があるのならいいと思う。

上記は、HTML上の話だけだが更にASP.NETでフレーム開発になると以下が追加される。
ASP.NETのフレームワーク基本概念「postback」や「ViewState」は同一ページ内の処理を基本と
するため相性が悪い為、VS2003では選択できたフレームセットのテンプレートはVS2005では無くなりました。
VSから作れないだけでテキストエディタなどで作成することは可能ですが、別フレーム間の操作やデータ参照で
トラブルまたはASP.NETで作成する意味が無くなる場合があります。

URLリンク(karua.at.webry.info)
URLリンク(www.atmarkit.co.jp)

これを解決するにはHTML・CGIの知識とあわせてASP.NETの「イベント関係の理解」・「postbackやViewStateの内
部的な動き」「動的に作成されるJavascriptの理解」など通常フレームワークで隠蔽されている部分の知識が必要に
なる場合がほとんどです。
で、大抵ASP.NETでframeを使った際のトラブルなんて特殊な状況を想定できる人は少ないので、Webで質問しても
レスを貰う事も難しくなります。


224:nobodyさん
07/10/22 13:43:34
>>214
追加だが
現在、「自動コンパイル」で遅いと思っていて手軽に解決するなら
「埋め込み先コンパイル」が一番簡単です。

cd /d C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
Aspnet_compiler -v /仮想ディレクトリ名 -errorstack

を2003Serverのコマンドプロンプトで流せば全てのファイルに
自動コンパイルを行った状態になります。

225:nobodyさん
07/10/22 22:58:44
あとセッション使うと単純にやると各フレームで同時処理できないからそれも注意がいるかもよ。



226:nobodyさん
07/10/23 00:43:07
>>225
どういう意味でしょうか?

227:216
07/10/23 01:51:24
>>223
なるほど。
>>W3Cはframeに対して否定的な動き
盲目的に信じるのもあれですがW3Cが推奨しないということは
やはりそれなりの理由があるんでしょうね。
>>VS2003では選択できたフレームセットのテンプレートはVS2005
2005でなくなっていてびっくりしました。
やはりVSとしても推奨しない動きなんでしょうね。
今回とりあえずフレームで実装したのですが変更した方がよいでしょうね。
だとしたら>>216>>220に内容は書きましたがフレームを使用することで
画面上部に検索条件入力フォームを「常に」表示させていたのですが
これをフレームを使用せずに用件を満たす必要があります。
フレーム無しで画面上部に常に表示させていたいコントロールを配置する場合
どうすればよいでしょうか?
常に表示させておく必要がなければvisibleあたりを制御するだけでよいのですが。。

>>225
これは>>226さんと同じく気になります。
どういう意味でしょうか?


228:216
07/10/23 02:32:53
すみません全く別の質問よいでしょうか?
検索結果一覧の画面を作成するためにどのコントロールを採用すればよいかお教えください。
目的は以下のサイトのようなビューです。
URLリンク(www.st-image.com)
・ページングあり
・単純な行での一覧表示ではなく、横→縦にデータが並んで表示される
試したこと
・GridView
 横に並んで表示できない
・DataList
 自前でページング処理を記述する必要があり
・DetailsView & FormView
 1レコードずつしか表示できない

一件DataListでもなんとかなると思うのですが自前で毎回全件を取得しないように気をつけたページング
処理を記述する必要があると言うところが腑に落ちません。
DataViewですとObjectDataSourceとObjectDataSourceのSelectedMethodを連携させることで
ページング処理を簡単に書くことができます。
なのにDataListでわざわざ自前でページング処理を書かなければならないというのが違和感です。
こういうサイトはどのようなコントロール&処理を実装しているのでしょうか?

229:nobodyさん
07/10/23 11:13:34
>>227
まず、海外も含めてインターネット上で公開されているWebサービスで上部にボタンなどが固定されている
実例が少ないことを考えれば固定する必要がなくても使いやすいシステムはできると言うことを念頭に置くべきです。
「画面内に必要な情報を集める」とか「検索処理をした後に検索のテキストボックスが常に見えている必要があるのか?」とか

それでも固定することにメリットがあると思うのならCSSで[overflow:autoとかposition:fixed(IE6対応にはjavascriptが必要)]
URLリンク(msdn2.microsoft.com)
(リキッドレイアウトにも対応)
は、数ある方法の無難な良い例になるので自分で解析してください。
Firefoxにfirebugアドオン入れれば解析も楽なはず。
もしくは、前のレスで言った「フレームを使う」事によってしか生まれないメリットを追求する。

各画面に同じレイアウト書かなきゃならんと言う開発側の問題はVS2005ならマスターページで解決する。

>>228
ObjectDataSourceを使ってる場合、GridViewだろうとページングの見た目は作成されるが処理は自前だけど。
SqlDataSourceなら処理部分まで自動で処理してくれるが、ボトルネックとか拡張性に問題があるので使い道はあまり無いが。

>処理を記述する必要があると言うところが腑に落ちません。
ASP.NETは魔法の杖じゃないから、普通にCGIで考えれば「必要な件数をDBから取得して」「必要な件数を表示する」と言うの
は当然でGridView+DataSourceはそれを処理しやすくなっているに過ぎないし。
だから、技術が無い・手軽になら既存のコントロールをベースにデザインを考えるしかない。
逆なら、クラスを継承するなり、カスタムコントロールなりで拡張すればいいだけ。
フレームワークの基本だと思うんだけどね。

1.ページング表示部を自作してDB検索してDataTableを作って「Repeater」コントロールで<div style="float:left;">を出力もしくは
DataListのDataSourceにDataTableを設定まで自分で作る。(中途半端にDataSourceなどの繋ぎに拘ると面倒になるので)
2.DataListを拡張(ユーザコントロール、カスタムコントロール)してDataSourceと連動するように作る。
 (ググればカスタムコントロールを作っている人も良そうだが)

230:nobodyさん
07/10/23 11:57:47
Javascriptでaspを呼び出すことはできるのでしょうか。

Javascriptでクッキー処理 -引数つけてASP呼び出し→ ASP処理 → ASPでJS書き出し

という感じのことをやりたいのですが。

231:230
07/10/23 11:58:30 35vpnyji
age忘れましたすみません。

232:nobodyさん
07/10/23 13:19:48
>>230
引数つけてASP呼び出し
location.href('URLリンク(www.aaa.aspx?a=1)')
他は省略

>Javascriptでクッキー処理 -引数つけてASP呼び出し→ ASP処理 → ASPでJS書き出し
ってか、この各処理は同一のaspxでの話しを想定してるの?
クッキー処理はASPへのデータ引渡しの為に使うの?

つうか、ASP.NET以前に、「HTMLとCGI」の値の受け渡しに利用しようとしているんであれば
クライアントとサーバの切り分けが出来ていないように感じるんだがその辺は大丈夫?
そう感じた理由に「本来ならPostを基準にデータを取得する所をPostデータの管理を便利にする為
にCookieを利用している」と切り分けが出来てるなら、ASP.NETの基本概念を見ればどの様に変化
したかがわかると思うんだよね。


233:216
07/10/24 00:36:46
>>229
・フレームについて
回答ありがとうございます。
>検索処理をした後に検索のテキストボックスが常に見えている必要があるのか?
通信販売等のサイトで使い勝手を確認したところおっしゃるとおり「ない」です。
常に見えていないことが特に気になりませんでした。
急遽フレームを使う仕様を変更しました。
ご指摘ありがとうございました。

・ページング処理可能なビューについて
GridView+ObjectDataSourceがページング処理を記述しなくてもよいという表現は誤りでした。
おっしゃるとおりデータ取得部分は自前です。
GridView+ObjectDataSourceがページング処理の見た目の処理を備えていたので
他にもこういう機能がないのかと思ったのですが甘かったみたいです。
手軽に、というのも理由の一つですが堅実なものを作成したいので既に備えている機能をわざわざ
実装するのは避けたかったため質問させていただきました。
素直に自作します。
今回は「2.DataListを拡張~」を行いたいと思います。
Webに関しては特にわからない部分が多いため質問のレベルも低いかもしれませんでしたが、
重ね重ねありがとうございます。

234:216
07/10/24 02:25:50
当初>>216にてお尋ねしましたが
フレームは使用しなくなったことで別フレームへ動的に作成されたWHERE区を
渡す必要はなくなりましたが、
以前と同じくWHERE区をObjectDataSourceのSelectedMethodで指定された
メソッドに渡す必要があります。
以前は別フレームに文字列渡すから仕方なくSession変数に複数の条件から作成した
WHERE区を入れておいて、ObjectDataSourceのSelectedMethodで指定された
メソッド内でFill()する前にSession変数から取り出せばよいと考えていたのですが、
同じページ内のコントロールからWHERE区を作成するだけなのにSession変数を
使用するのに違和感を感じてきました。
もっと簡潔な方法ありませんか?
・フレームは使用していない単一ページ
・検索ボタンは検索したい方法が2つあるため、ボタンが二つある
 (TextBox1つと検索ボタンで構成されたALLサーチ機能と細かい条件を指定するための多数の入力コントロールと詳細検索ボタン)
・SelectedMethod内でWHERE区を動的に作成しようとするなら、どちらのボタンが押されての検索かわからないため、
 SelectedParameterに全ての入力コントロールをずらずらと並べることはできない
 SelectedMethod内でどちらのボタンが押されての処理か判断できないと思われるため
・ボタンのイベントでそれぞれ動的にWHERE区を作成し、Session変数に格納し、
 SelectedMethod内で受け取るという処理はトリッキーな方法に感じる

本件はSession変数を用いてデータの受け渡しをすることが一般的な処理方法でしょうか?
勉強で作成していますので動けばいい、というものを作ることはできないため
確認させてください。
「ObjectDataSource SelectedMethod 動的 WHERE」辺りの検索ワードでは
 今回のケースにあたるような情報を見つけ出すことができませんでした。。

235:nobodyさん
07/10/24 02:28:26
>>225
同一セッションのリクエストは直列化されるってことだよ。


236:nobodyさん
07/10/24 03:00:01
フレーム分割することによりユーザービリティが低下することって考えられないけどねぇ・・・。
検索エリアを固定を常表示することで解決できるけど、それならFrameでいいじゃんと思んだけど・・・。
あらゆる場面を検証したW3Cに反論する気はないけど、規約に反するからって単一画面で描画の
遅いメニュー表示されたら余計にイライラするけどwww


237:nobodyさん
07/10/24 12:38:49
>>234
1.SelectMethodに全ての条件+処理フラグの引数を作る。
2.SelectedParameterに項目+ボタン区別用のhiddenをControlParameterとする。
3.ボタンを押されたらASP側のクリックイベントでhiddenにフラグをセットする。
4.ObjectDataSourceの中身で処理フラグによって処理を分ける。

「2.」「3.」はSelectParametersをasp:Parameterにしておいて動的に変更すれば
hidden項目自体要らない。


238:nobodyさん
07/10/24 16:35:10
質問者に対する回答でもなくて、
ユーザービリティを自分が経験した事だけでしか想像できなくて、
わけ分からん描画の遅い早いを持ち出す、
的外れてる奴が出てきたなと。


239:nobodyさん
07/10/24 23:22:33
お前ら全員死ねよ

240:nobodyさん
07/10/24 23:27:23
過激なやつだ…


241:nobodyさん
07/10/25 21:16:47
お前ら全員愛してる

242:nobodyさん
07/10/25 21:39:46
キスして

243:nobodyさん
07/10/26 00:57:34
屁こいてやったぜ

244:nobodyさん
07/10/26 15:36:23
MSDN2みたいに、メニューバーエリアを選択したら、そのメニュー項目が
Popupメニューのようにフェードイン・フェードアウトして一覧表示される
にはどうすればよいですか?

245:nobodyさん
07/10/26 17:05:56
>>244
1.MSDNのjavascriptを解析して組み込む。
2.Popup Menuのjavascriptライブラリを利用する。
 ASP.NETの場合は、HTML上に表示されるコントロールID(ClientID)をライブラリに割り付ける方法は考える必要があり。
3.ASP.NET AJAX Control ToolkitのPopupControlExtenderを利用する。
 ASP.NETのほかのサーバコントロールと同じように作成できるが、
 Javascriptが隠蔽されるとか、コントロールの使い方を覚えないといかないはとかで理論が分かりにくい。

PopupControlExtenderの場合は<Animations>にこんな感じで指定すれば動く。
<Animations>
<OnShow>
<Sequence>
<StyleAction Attribute="overflow" Value="hidden"/>
<StyleAction Attribute="height" Value="0"/>
<StyleAction Attribute="width" Value="0"/>
<HideAction Visible="true" />
<Parallel Duration=".2" Fps="15">
<Resize Height="50" Width="125" Unit="px" />
</Parallel>
</Sequence>
</OnShow>
<OnHide>
<Sequence>
<StyleAction Attribute="overflow" Value="hidden"/>
<Parallel Duration=".2" Fps="20">
<Resize Height="0" Width="0" Unit="px" />
</Parallel>
<StyleAction Attribute="display" Value="none"/>
</Sequence>
</OnHide>
</Animations>

246:216
07/10/27 14:04:47
>>237
この方法で実装できそうです。
前から気になっていたのですっきりしました。
「asp:Parameter」という部分が理解できませんが別途調べますね。
ありがとうございます。

247:nobodyさん
07/10/27 17:04:02
>>246
SelectedParameter
<asp:Parameter Name="flg" Type="String" />

ボタン1処理
ObjectDataSource.SelectParameters.Item("flg").DefaultValue = "処理1"

ボタン2処理
ObjectDataSource.SelectParameters.Item("flg").DefaultValue = "処理2"

とすれば、hiddenを経由しなくても動的に値を変化させられる。
hiddenの方がコントロールを経由するので直感的かもしれんが、
無駄なhiddenを作る必要が無かったりするので。

248:216
07/10/28 16:18:54
>>247
せっかくヒントをいただいたので自分で調べようと思っていたのですが
ご丁寧にありがとうございます。
<asp:Parameter>
というのはGUIで作成するところで言う
パラメータソースが「None」のものですね。
Noneてどういう時に使うのかと思っていました。
こちらを組み込んだところ無事動作が確認できました。
ありがとうございました。


249:nobodyさん
07/10/29 00:16:00
ASP.NETの勉強サイト、またはTips集のサイトを教えてください!!!

250:nobodyさん
07/10/29 00:54:42
>>249
Tips集というかサンプル集
URLリンク(www.friendlysw.com)
ここのASP.NETサンプル
とか。

勉強サイトについては聞き方として漠然としてよろしくないと思います。
URLリンク(www.google.co.jp)


251:nobodyさん
07/10/29 01:47:16
>>249
ほとんど分からないのなら
一通りの機能には触るので>>2のMicrosoft ASP.NET
クイック スタート チュートリアルを最初の項目から順
にやっていくといいよ。

ただ、>>2のリンクはasp.net 1.1版なので2.0の場合は
web上では公開されて無いので「ASP.NET 2.0 クイック
スタートチュートリアル」をインストールしてみるといい。

最低限このクイック スタート チュートリアルの内容が
全て分かって無いとTips集なんか見ても理解できないかも。

252:nobodyさん
07/10/30 12:03:08
>>250-251
ありがとう。

253:nobodyさん
07/10/31 06:14:37 Ln67m40J
テキストボックスに入力されている文字列が数値かどうか判断するために
ReularExpressionValidatorを利用しています。
VaridationExpressionプロパティに「^[0-9]+$」を設定したのですが
半角スペースをのみを入力した場合IsValidateがTrueを返してしまいます。
半角スペースが入力された場合の対応としてはどういう対処が必要でしょうか?


254:nobodyさん
07/10/31 08:47:21 KCIK9HQ4
SQLServer2005への接続文字列で
DateSource:サーバー名\SQLEXPRESS
とSQLEXPRESSを付けないと接続できないけどこれは変更できるのでしょうか?
それともEXPRESS Editionを使用しているからでしょうか?

255:nobodyさん
07/10/31 10:48:10
>>254
DBMSのインストール時に名前付インスタンスにしてしまったら無理
既定のインスタンスでインストールすればインスタンス名無しでいける
Books On Lineをインストール前に入手して読めばわかることなんだけどね

256:nobodyさん
07/10/31 12:52:23
>>253
function RegularExpressionValidatorEvaluateIsValid(val) {
var value = ValidatorGetValue(val.controltovalidate);
if (ValidatorTrim(value).length == 0)
return true;
var rx = new RegExp(val.validationexpression);
var matches = rx.exec(value);
return (matches != null && value == matches[0]);
}
function ValidatorTrim(s) {
var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
return (m == null) ? "" : m[1];
}
上から分かるように、Validatorはスペースのみと入力なしを区別してないので、
ASP.NET側の処理もTrimするなりで合わせとくとか、CustomValidator(ValidateEmptyText="True")で
自作するとか、Javascriptで同じfunction名で処理を上書きして書き換えちゃうとか色々。

>>254
ASP.NETと関係ないし。
URLリンク(www.microsoft.com)
こことか参考にして理解した上で好きなようにしてください。


257:nobodyさん
07/10/31 14:35:49 KCIK9HQ4
>>255
勉強になりました。

258:nobodyさん
07/11/04 02:42:02
gridviewのrowを編集モードにして、値を入力する際に、
Javascriptを使用して、winodw.openで子ウィンドウを開いて、
そこから値を選択し、親windowの編集モード中のrow内のtextbox1に、
子Windowsで取得した値を入れたいのですが
detailviewには下記のようにして値を直接入れられるのですが、

-子windowで値選択時のコード-
Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged

Dim str As String = GridView1.SelectedRow.Cells(1).Text

Dim strScript As New System.Text.StringBuilder
strScript.Append("<script language=javascript>")
strScript.Append("window.opener.document.form1.DetailsView1$TextBox1.value = " & str & ";")
strScript.Append("</script>")

RegisterStartupScript("window", strScript.ToString)

End Sub

gridview内のtextboxに入れようとすると
strScript.Append("window.opener.document.form1.GridView1$ctl02$TextBox1 = " & str & ";")
というように編集中のrow数を指定すれば入れられるのですが、
これはどうかと思い、別方法を考え
親側のform1内にhiddenコントロールを配置し、そこに値を渡してポストバックして、
page_loadでそのhiddenコントロールの値を編集中のrowのtextbox1に渡すことを考えたのですが
編集中のrow内のtextbox1への値の入れ方が分かりません。
page_load内にどのように書けば編集中のrow内のコントロールに値を渡せるでしょうか?


259:nobodyさん
07/11/04 18:41:36
今手元に本がないので曖昧なのですが、
「Sessionには、~と、シリアル化できるオブジェクト(?)を渡す事ができる」
と書いてあったと思います。
シリアル化とはどういう意味なのでしょうか??

あとエラー処理で
「エラーは多数の行のコードをtry,catchで囲むのではなく、エラーの起きる可能性のある
行を1行ごとにtry,catchで囲むのが良い」
と書いてあったように思います。
もし、1行ごとに囲むならば、Exceptionの詳しい内容を調べる必要があると思いますが、
Exception一覧、というが載っている資料もしくはURLがありましたら教えてください。

よろしくお願いします。

260:nobodyさん
07/11/04 20:56:58
>>258
TemplateFieldを使って無いのならば、例外処理とか除いているが
CType(gridView.Rows(gridView.EditIndex).Cells.Item(1).Controls(0), TextBox).Text = "aaa"

>>strScript.Append("window.opener.document.form1.GridView1$ctl02$TextBox1 = " & str & ";")
>>というように編集中のrow数を指定すれば入れられるのですが、
>>これはどうかと思い、別方法を考え
row数を指定するんではなくて、
gridView.Rows(gridView.EditIndex).Cells.Item(1).Controls(0).ClientID
で現在編集中の行のHTML上のテキストボックスの名前が取得できるので
この値を利用してJavascriptを作り出せばhiddenコントロールもいらないと思う。

>>259
>>シリアル化とはどういう意味なのでしょうか??
URLリンク(e-words.jp)
.NETでなら、簡単に言えばクラスがISerializableインターフェイスを実装しているか。

例)DataTable
URLリンク(msdn2.microsoft.com)(VS.80).aspx
URLリンク(msdn2.microsoft.com)(VS.80).aspx


ちなみに、セッションがInProcモード なら、シリアライズ不可能なオブジェクトも
セッション変数に格納できます。

>>Exception一覧、というが載っている資料もしくはURLがありましたら教えてください。
例外が発生する可能性のあるクラスのメソッドをMSDNで調べてください。

例)System.IO.File.Delete メソッド
URLリンク(msdn2.microsoft.com)(VS.80).aspx



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