トップページ⇒php
1001コメント372KB

【質問】ASP.NETスレ Part2【議論】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2005/03/22(火) 17:32:11ID:???
●過去ログ
Part1 - 【質問】 ASP.NETスレ 【議論】
http://pc5.2ch.net/php/kako/1040/10406/1040698263.html
08038022006/08/04(金) 23:15:09ID:???
訂正です。
If Not IsPostBack And Not Response.Cookies Is Nothing Then
じゃなくて
If Not IsPostBack And Not Response.Cookies("userName") Is Nothing Then
とは書いてました。
いろいろサンプルコードとか見てみてもこれで良さそうなんですが。。。
08048022006/08/04(金) 23:59:49ID:???
また追加です。
ボタンをクリックしたときは、クッキーの記録ファイルは作られ、
ちゃんと保存もされています。

ところが
Not Response.Cookies("userName") Is Nothing
を通過するとファイルが消えます。

If文を消して
TextBox1.Text = Response.Cookies("userName").Value
を実行させたときも、ファイルが消えます。

とにかく、保存されたクッキーにアクセスがあると勝手に消えて
しまいます。どうしたらよいでしょうか?
0805nobodyさん2006/08/05(土) 02:17:48ID:???
>>804
有効期限切れ
0806nobodyさん2006/08/05(土) 21:24:08ID:???
Cookieを書くときはResponse.Cookiesで読むときはRequest.Cookiesです
0807nobodyさん2006/08/05(土) 21:30:05ID:???
ASP.NETでしかつくれないページ
http://nyannyan3.minidns.net/up/up001/File/2006_08_05-Dukan.aspx
08088022006/08/05(土) 21:36:26ID:???
>>805さん>>806さんレスありがとうございます。
Request.Cookiesで出来ました!
0809nobodyさん2006/08/06(日) 08:57:11ID:???
>>753,755
初めてこのスレに来たので亀レス。
Updateメソッドを利用するってことは、複数レコードを一回の操作で更新するとかそんな感じ?

ObjectDataSource使うと良いんじゃないかな。
DataSourceのクラスにDataSetの更新とDB更新の二つのメソッドを用意してだな。
GridViewの編集→更新で、Datasetの更新。
確定時にDBの更新メソッドを走らせる。

時間が無くて、元ロジックそのまま使い回すなら
前に使ってたクラスを扱うラッピングクラスを作ってそれをDataSourceにするとかー…

見当違いだったらゴメソ
0810nobodyさん2006/08/06(日) 13:03:06ID:Yu3xhKAc
baspを使用してメール送信をしたいんですけど、
ASPの場合に記述する Set bobj = Server.CreateObject("basp21")
のようなオブジェクトの作成方法がわかりません・・・
どなたか教えていただけませんか?お願いします。
0811nobodyさん2006/08/06(日) 14:29:36ID:???
BASP21の参照設定をしてインスタンス作成するだけ。
Dim basp As New BASP21Lib.Basp21
Dim result As String
result = basp.SendMail("Server", "To", "From", "Subject", "Body", "")


プロバイダの設定が上手く行かなくてハマってるんだけど、誰か似たような経験ある人居る?
<ConnectionStrings>
  <add name="testConn" (SQLServerを接続先に指定)/>
</ConnectionStrings>
<メンバシップ プロバイダの指定 → testConn>
<プロファイル プロバイダの指定 → testConn>
<ロール プロバイダの指定 → testConn>
こうやって接続先を指定しているにもかかわらず、
実際にログインコントロールを走らせるとLocalSqlServer見に行ってしまうんだよなぁOTL
(machin.configにデフォルトで書かれているアレを見に行ってしまうんだなw)
スタックトレースを見ると、ロールのインスタンス作るときにLocalSqlServerを見に行ってる感じ。
web.configでLocalSqlServerの接続先を上書きしてしまえば狙った動きはするんだけど、
なんか納得行かないー
0812nobodyさん2006/08/06(日) 20:26:01ID:???
なんでわざわざbaspでやるの?
0813nobodyさん2006/08/06(日) 21:28:16ID:???
FlushMailメソッドを使いたいんじゃないかな…
0814nobodyさん2006/08/07(月) 08:28:12ID:???
坊やだからさ
08158022006/08/08(火) 00:39:08ID:???
あ、あのう。質問ばっかりですみません。
Request.Cookiesでクッキーの取得は出来たのですが、テキストボックスに
返した日本語がどうしても文字化けしてしまいます。
文字コードの変換をしなければならないのでしょうが、どうしてもわかり
ません。
重ね重ね申し訳ありませんが、お教えいただけませんでしょうか?
0816nobodyさん2006/08/08(火) 01:48:14ID:???
>>815
URLエンコードされてるんじゃなくて?
08178022006/08/08(火) 10:17:51ID:???
>>816
お騒がせしました。何故かなにもしないのに文字化けが直りました。
0818nobodyさん2006/08/08(火) 11:21:26ID:???
うそこけ
0819nobodyさん2006/08/08(火) 17:11:45ID:n2+YSk39
>>811
ありがとうございました!
早速、
Dim Server As String = "smtp.mail.yahoo.co.jp"
Dim To As String = "***@yahoo.co.jp"
Dim result As String
result = basp.SendMail("Server", "To", "From", "Subject", "Body", "")

と記述して、メールを送ってみたのですが、
いっこうにメールが届きません・・・
08208112006/08/08(火) 20:34:57ID:???
>>819
っhttp://help.yahoo.co.jp/help/jp/mail/anti-spam/anti-spam-49.html
っhttp://www.hi-ho.ne.jp/babaq/basp21.html
0821nobodyさん2006/08/09(水) 13:45:51ID:???
>>794
遅レスですが、ログインコントロールを完全に自前のテーブルで
使うとしたら、MembershipProviderをカスタマイズする必要がありそうです。

http://msdn.microsoft.com/asp.net/downloads/providers/default.aspx?pull=/library/en-us/dnaspp/html/asp2prvdr01.asp
の上の方に「ProviderToolkitSamples.msi」のリンクがあります。
これをインストールすると各種プロバイダのサンプルソースが展開されます。

これを参考にしてカスタマイズすれば何とかなるでしょう。
SqlConnectionHelper.csのCheckPasswordメソッドのあたり。
ただ他との絡みもあるので、一筋縄ではいかないかも。

上記リンクの親ページ
http://msdn.microsoft.com/asp.net/downloads/providers/default.aspx
のあたりも内容がディープですが読んでみると参考になるかと。
0822nobodyさん2006/08/09(水) 13:47:18ID:???
>>821
訂正
×SqlConnectionHelper.cs
○SqlMembershipProvider.cs
0823nobodyさん2006/08/09(水) 17:27:52ID:???
ASP.NET 2.0で質問があるのですが、
ボタンを押したときに「入力項目のエラーチェック(サーバーサイド)→"登録してよろしいですか?"等のダイアログの表示(クライアントサイド)→データ登録処理(サーバーサイド)」
という動作をさせたいのですが、Button.Attributes.Addメソッドでダイアログを表示させる方法だと、
エラーチェックをする前にダイアログが表示されてしまいます。
ダイアログを任意のタイミングで表示させる方法がありましたらご教授お願いします。
0824nobodyさん2006/08/09(水) 17:33:54ID:03ztM589
ASP.NETでファイルのアップロードをしようとしてます。
デザインはファイルを参照して選んでアップロードボタンを押すという単純なものです
下のコードはVB側のコードです。
どこもエラーがないのにうまくできませんどうしてでしょうか?
Partial Class FileUpload
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim httpPostedFile As HttpPostedFile
httpPostedFile = Request.Files("C:\userfile.txt")
Dim splitString() As String
Dim fileName As String
splitString = httpPostedFile.FileName.Split("\\")
fileName = splitString(splitString.Length - 1)

httpPostedFile.SaveAs(Request.PhysicalApplicationPath + fileName)
Label1.Text = "アップロードされました。"
Catch ex As Exception
Label1.Text = ex.Message
End Try

End Sub
End Class
実行するとオブジェクト参照がオブジェクト インスタンスに設定されていません。
とでてきます。
0825nobodyさん2006/08/09(水) 17:38:38ID:???
C#使えてもやっぱりVBを勉強した方がいいのかな?
ASP.NETの本ってほとんどVB使ってるし
0826nobodyさん2006/08/09(水) 17:49:25ID:03ztM589
>>825
ASP.NETの拡張子を見てくださいaspx.vbとなってるはずです
ASPとはデザイン側はHTMLで動作はすべてVBです。
もちろんC#をやっとけばVBに近いので損はないですが基本的に別物です。
0827nobodyさん2006/08/09(水) 19:24:10ID:???
\をエスケープしろよ。
だがIE7ではもう動かなくなるな。
0828nobodyさん2006/08/09(水) 19:24:49ID:???
あいや大丈夫か…
0829nobodyさん2006/08/09(水) 19:25:29ID:???
いや大丈夫じゃないな。
0830nobodyさん2006/08/09(水) 19:47:10ID:???
>>826
釣られてやるか……。
あんたがVB.NETのプロジェクト選択してからaspx.vbなだけで、C♯を選択していればaspx.csだよ。
デザイナで自動生成されるコードもC♯だ。
クライアントでVBScript言語を動作させることもあるが、VB.NETとは別物だし今は廃れている。

>>825
C♯だけで十分、MSDNはC♯のコードがあるだろ。VB.NETしか書いてないASP.NETの本なんか捨てろ。
むしろJavaScript知ってた方がASP.NETでは役に立つ。
0831nobodyさん2006/08/09(水) 20:41:58ID:???
ファイルロックのしかたを教えてください先生
0832nobodyさん2006/08/10(木) 03:05:52ID:???
>>825 は C# をまともに使えてないと思う・・・
>>826 は VB.net, ASP.net のどちらもまともに使えてないと思う・・・
08338252006/08/10(木) 08:10:16ID:???
>>830
本屋で見ただけだから買ってはないよ。VB使う人が増えるのならVB知ってた方が便利かな〜と思っただけ
0834nobodyさん2006/08/10(木) 19:43:40ID:???
>>831
私はファイルロックを実現するために
Applicationオブジェクトを使ってますが
正しい方法なのかはわかりません。
0835nobodyさん2006/08/10(木) 20:32:14ID:???
結局ファイルロックのしかたはわかりませんでしたが
ファイルの読み書きの際にフラグとしてフォルダを作成して
終わったら削除するというどこかのHPに載ってた方法で妥協しますた
1日100アクセスもないHPだし
0836nobodyさん2006/08/11(金) 09:50:21ID:???
this.MapPathとserver.MapPathは動作にどのような違いがあるのでしょうか?
0837nobodyさん2006/08/14(月) 17:33:17ID:RwKIUsyQ
>836
いい質問だ。誰か教えろ。
0838nobodyさん2006/08/14(月) 21:14:33ID:???
>>836
1. this.MapPath
2. server.MapPath
は、次のメソッドを指すとエスパーする。
1. System.Web.UI.Page.MapPath(string path)
2. System.Web.HttpServerUtility.MapPath(string path)
Reflectorで見ると、どちらも結局は
internal string System.Web.HttpRequest.MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, true);
を使っている。完全に同じではないかもしれないが、ほぼ同じものじゃねーのって感じ。
0839nobodyさん2006/08/14(月) 23:31:06ID:???
おれも昔、気になって、2つのメソッドを比較したけど、
同じ結果が返ってきた気がする。

なんで同じメソッドを2つも用意したのだろうね〜?
0840nobodyさん2006/08/15(火) 04:27:47ID:???
ただのショートカット+過去との互換性もどき
0841nobodyさん2006/08/15(火) 12:30:32ID:???
ASPNETDB.MDFでは、
ユーザ名とパスワードくらいしか管理できません。
年齢や、性別など、プロフィール情報を管理する良い方法はありますか?

ASPNETDB.MDF以外に、新たなDBとテーブルを作るべきでしょうか?
0842nobodyさん2006/08/16(水) 00:10:15ID:???
主に 1.1 時々 2.0 で仕事してる私に教えちくり

ASPNETDB.MDF って何がうれしいの?
重要?

0843nobodyさん2006/08/16(水) 01:51:53ID:???
何を言っているのかね?
0844nobodyさん2006/08/16(水) 02:24:02ID:???
おおと、>>843は>>841宛
プロファイルとか使えるんじゃないのかい?
0845nobodyさん2006/08/16(水) 02:58:09ID:???
プロファイル? これまた新機能ですか。調べてみます。
0846nobodyさん2006/08/16(水) 16:33:19ID:???
ASP.NETのフォーム認証で承認されたユーザーのアクセスログ、
特にユーザー名(cs-username)ってのは、IIS6.0のログに出力できますか?
0847nobodyさん 2006/08/16(水) 23:18:12ID:???
すみません、質問なんですけど
ASP.NETのwebサイト管理ツールを起動すると

「エラーが発生しました。前のページに戻って、もう一度やり直してください。 」

と、出て起動できません。
何が対策方法とかありますか?
0848nobodyさん2006/08/19(土) 17:51:41ID:???
>>846
デフォルトじゃ出来ないっぽいですね
偽装使ってASP.NETワーカープロセスの権限では書き込めない筈。
間違ってたらすいません

ここのチップスもしくは掲示板に結構色んな質問があるので
こちらで調べるといいかも
↓
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
08498482006/08/19(土) 17:57:29ID:???
誤記
×偽装使って
○偽装使わないと
0850nobodyさん2006/08/19(土) 21:34:33ID:???
なんかえらい強引なことさせようとしてないかい?
HttpResponse.AppendToLog で目的は果たせるんじゃない?

0851nobodyさん2006/08/20(日) 01:16:11ID:???
入門にwebチャットを作ってみたんだが
一定時間おきに自動更新がしたかったのでMETAで更新することにしますた
するとテキストボックスに入力中に自動更新とかぶると入力中の文字がきえてしまいまつ
マスターページをつかってみたけど結果はかわらず
しかたなくフレームでテキストボックスを区切ることにしまつた
ほかにいい方法あれば教えてくださいエロイ人
0852nobodyさん2006/08/20(日) 17:00:23ID:???
ajaxかクライアントコールバック
0853nobodyさん2006/08/25(金) 20:46:41ID:CnHG+g6h
クライアントコールバックってなに?
0854nobodyさん2006/08/25(金) 23:42:41ID:u/xDTKmg
ム板から移動してきました。
宜しくお願いします。

非ASP.NETアプリからのSubmitをASP.NETで受ける際に、複数のチェックボックスのような
同じ名前のRequestパラメータを取得するにはどうすればいいのですか?

0855nobodyさん2006/08/26(土) 00:51:23ID:???
ASP.NETでフォーム認証を使って、ログインしデータの編集ページへ飛ぶようなサイトを作成しています
フォーム認証とロールの設定は出来ましたが、負荷を考えて同時にアクセス数を10人程度に制限がしたいのです
どうやって人数をカウントをするか悩んでいます。Global.asaxで認証した時に起こるイベントハンドラがありますので
そこから、認証時の人数をカウントしようかと思ったのですが、ログアウトの検出をどうやってやるのかがわかりません。
どなたかご存知でしたら御教授ねがえますか?
0856nobodyさん2006/08/26(土) 02:09:58ID:???
ログアウトは、LoginStatusコントロールのイベントでチェックできるけど、
ほとんどの人が、ブラウザのウィンドウを閉じちゃうからね。
どうすればいいんだろ?
0857nobodyさん2006/08/26(土) 14:44:21ID:???
>>855
そんなもんアクセスログつくっておけばいいんじゃねーの?
で、アクセスきたらそいつのIPを時間とともに書き込んで
ログアウトするか一定時間経過してたら削除 で、10人以上ログに記録されてたらログイン失敗といった感じで

ログアウトって言ってもログアウトまんどくさい派はログアウトしないで終了するかもしれんし
PCの不具合でお亡くなりになるとやっぱりログアウトの監視なんて事実上不可能だし
TCP/IPとかで通信してるなら切断したのわかるがフォーム認証ってWebフォームのことでしょ?
0858nobodyさん2006/08/26(土) 23:45:12ID:???
あんまりログインユーザを制御するのはお勧めできないんだけどな。
とりあえずMembership.GetNumberOfUsersOnline メソッド

しかし負荷を考えて10人程度って、どんなサイトだよ。
0859nobodyさん2006/08/26(土) 23:48:16ID:???
ああそうそう、10人なんて少ない人数でこんな制御したら、
しばらく誰も使えないなんてふざけたことになる可能性もあるから、
十分検討した方がいいぞ。
0860nobodyさん2006/08/27(日) 00:55:45ID:T4ypEbNf
ASP.NET+VB+JavaScriptについて聞かせてください。
3時間ほど迷ったのですがわからなかったので。

<HEAD>
<script language="javascript">
function OpenWindow()
{
window.open("http://www.yahoo.co.jp";,"_blank");
}
</script>
</HEAD>
↑みたいな感じでHEAD内にJavaScriptの関数を定義します。
これをとあるサイトで
Response.Write(OpenWindow())
とすれば呼び出せるとの記述を見つけたのですがうまくいきません。
Response.Write("OpenWindow()")
と変更したのですがこれだと呼び出したページに「OpenWindow()」という
文字が描画されてしまいました。
自分で定義したjavascriptの関数をvb内から呼び出すにはどうすればよいでしょうか?
よろしくお願いします。
0861nobodyさん2006/08/27(日) 02:33:05ID:???
>>860
動いてる場所が違うから無理
08628602006/08/27(日) 02:41:34ID:???
>>861
すみません、表現が悪かったです。
実際には自作したjavascriptのfunctionをクライアント側で
実行させたいのです。
>>860の例で言うなら
クライアント側で新しいウィンドウを作成し、
yahooを表示したいと思っています。
08638612006/08/27(日) 02:50:10ID:???
ああ、なるほど

単純にscriptタグ書き出せば良いのでは?
08648602006/08/27(日) 02:59:44ID:???
>>863
もちろんそれも方法の一つなのですが
その方法だと数カ所で同じ関数を使ってる場合
修正する必要が出た時につらそうだというのと
scriptタグの書き出しは使用しない方が良いという
解説を見かけたので避けたいと思っています。
>>860の方法は不可能ですか?
0865nobodyさん2006/08/27(日) 03:53:24ID:???
>>864
残念ながら、無理。あまり、クライアントサイドスクリプトの相性はよくない。
0866nobodyさん2006/08/27(日) 05:16:26ID:???
つうか呼び出すってどこで呼び出したいのよ?
Register??Script
系のではできないの?
あるいはボタン押したときとかならOnClientClickプロパティとか。
08678602006/08/27(日) 06:06:52ID:???
>>866
>Register??Script
これってなんでしょうか。
もう少し詳しく教えてもらっていいでしょうか?

ちなみにどこで使おうとしているかというと
DataListコントロールの中で
System.Web.UI.WebControls.ImageButtonコントロールを使用していて
画像がクリックされたら別窓で拡大された画像を表示しようとしています。
javascriptを使用する理由は別ウィンドウを開く際、
開くウィンドウの高さ、幅の制御等を行いたいからです。
OnClientClickプロパティはSystem.Web.UI.WebControls.ImageButtonで
使用できないようなので。。
こういう処理の場合どうやって実装するべきなんでしょうか?
0868nobodyさん2006/08/27(日) 13:02:46ID:???
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.imagebutton.onclientclick.aspx

少なくとも、ImageButtonコントロールの
OnClientClick プロパティ は使えると思うけど。
0869nobodyさん2006/08/27(日) 15:32:14ID:bPHgPhjg
初心者なのでphpをまずいじってみてるんですけど、なにやら.netというのがはやってるみたいで、
そっちにのりかえたほうがいいのかなと思ってるとこなんですけど、ASP.netとphpってどっちが
いいの?
08708602006/08/27(日) 16:31:36ID:???
>>868
ありがとうございます。
DataListの中に入っているImageButtonコントロールのOnClickイベントに
関連付けるべく以下のコードに修正しました。
<asp:ImageButton id=ImageButton1 runat="server" OnClick="OpenWindow" ImageUrl='<%# DataBinder.Eval(Container, "DataItem.CD", "{0}.jpg") %>' CommandName="select">
IEにて実行したところ
コンパイラ エラー メッセージ: BC30456: 'OpenWindow' は 'ASP.Details_aspx' のメンバではありません。
と表示されてしまいました。
教えていただいたリンク先のサンプルを元に試したところ
サンプルがVBScriptだったのでVBScriptで書き、サンプルには「runat="server"」
とあったので同じようにしたところOnClickイベントを捕らえることができたのですが
サンプルはクリックされた座標をラベルコントロールに表示するもので
これだとサーバーサイドで実行されるのでクライアントサイドで
新しいウィンドウを表示させるようにするのとはちょっと違う気がします。
OnClickイベントを使用してクライアントサイドで実行させるjavascriptを
投げることはできないのでしょうか?
0871nobodyさん2006/08/27(日) 18:59:17ID:???
ASP.NETだと事実上win鯖に限定されてしまう
リナクソでも使いたいならPHPのほうがイイ
0872nobodyさん2006/08/27(日) 21:51:45ID:???
なあみんながひたすらOnclientClickって言ってるのに、
OnClickでできないできないってわめくのはなぜ?
0873nobodyさん2006/08/28(月) 13:50:38ID:???
>>872
ASP.NET1.1だからじゃね?
ASP.NET1.1のボタンコントロールなら、コードビハインドで
.AddAttribute("onclick", ファンクション名)

後はhtmlのボタンをサーバーコントロールとして実行という手もあるな。
0874nobodyさん2006/08/28(月) 21:46:56ID:???
こんにちは。

WinXP Pro ASP2.0 VWD で作成し正常動作したASPページを、Win2kのPCに持って行くと動きません。
Win2kの方は、IISと.NET Framework2.0をインストールしたままで特にいじってません。
Web.Config内のroleManager enabled="true"は変です。というエラーがでるので、これをfalse
にしてみてもやっぱり変ですというエラーがでます。でこの一行を消すと、ローカルhttp://localhost
では動きますが、外部からアクセスするとRuntime Errorで動きません。

どなたか解決法を教えていただけませんでしょうか?
0875nobodyさん2006/08/28(月) 22:23:30ID:wP3k1/vQ
よくわからんが
もれはVWDで作成されたWeb。Configだけ消すと何事もなかったかのように動く
あと書き込み処理とかあるファイルのパーミッションはかえてるよな?

エラー内容もUPしてみ?
08768602006/08/28(月) 23:06:18ID:???
>>872
正直言いますとOnClientClickをOnClickと読み違えてました。
でも動かなかったので凄く悩みました。
>>873の言う通り1.1でした。
自分自身2と思ってたんですが。。
おかげさまで動作確認できました。
ところがこの方法だと実際はImageButtonがDataGrid(DataList)中の中にあり、
表示させる画像のパスは同じレコードの別フィールドから作成するため
実用的ではありませんでした。
>>872のAddAttribute("onclick", ファンクション名) という方法を使っても
ファンクションに引数として同じレコードの情報を渡すことができないからです。
そこで当初の通りImageButtonのCommandNameに「select」を使用し、
DataGridのSelectedIndexChangedイベントの中で動的にjavascriptを作成し、
Response.Writeでクライアントに投げることで要件を満たすことができました。
ですがこの方法だとクリックするだけでページがリロードされてしまい、
スクロールバーが最上位まで戻ってしまい不便です。

08778602006/08/28(月) 23:13:08ID:???
続き
実際やりたいことは
DataGridを使用して表示されたレコード群の中の
小さい画像(ImageButton)がクリックされたら
クライアント側に別ウィンドウとしてその画像の大きな画像を
ウィンドウサイズ等を指定して表示したいのです。
こういう場合どういう方法が一般的なんでしょうか?
ImageButtonを「CommandName=select」として使用し、
DataGridのSelectedIndexChangedイベントで
javascriptでウィンドウサイズ等を指定してクライアントに投げた場合、
クリック時ページがリロードされてしまいスクロールバーの位置が最上位に
戻ります。
かといってImageButtonのOnClick(OnClientClick)等のイベントで
javascriptを用いてクライアント側にウィンドウを開けさせようと場合、
開くべき画像パスの情報をクリックされた画像のレコードの情報を
引数として渡すことができないです。
こういう場合みなさんならどうやって作成しますか?
細かくなってしまい申し訳ありませんがよろしくお願いします。
0878nobodyさん2006/08/28(月) 23:45:14ID:???
>>860
サイズ指定できるかわからんけど、別のWebForm作ってそこに飛ばすとかじゃとだめかな?
指定はtargetでやれば別ウインドウで開けるでしょ?
08798732006/08/29(火) 15:13:12ID:???
>>876-877
DataGridコントロールのイベントについて調べてみ。
適切なイベントで適切な処理を行えば、
おまいのやりたいことが出来るはずだ。
0880nobodyさん2006/08/29(火) 19:49:46ID:???
VS2003、C#、フレームワーク1.1SP1
型付きDataSetを公開するようなWebメソッドを作成しているのですが、
プロキシクラスとして作成されるクライアント側のデータセットが正しく生成されなくて困っています。

具体的にはカラムのNullValueプロパティを(Empty)にしておいても、プロキシクラスの
型付きデータセットのプロパティ内にInvalidCastExceptionのtry-catchが生成されてしまうのです。
WSDL.exeに直接XSDを入れて生成してみてもダメでした。
これは自動生成ツールの限界としてあきらめた方がよいのでしょうか?
08818742006/08/29(火) 21:43:56ID:???
>>875
ありがとうございます。
なぜだかわかりませんが、なんか動くようになりました。
08828602006/08/30(水) 01:29:05ID:???
>>876-877について
>>879
ありがとうございます。
おそらくItemCommandイベントですよね?
ItemCommandのイベントを使用するやり方、というより
イベントと小さい画像(ImageButton)をクリックした際に
ページがリロードされスクロールバーが最上位に戻ってしまいます。
第一クリックされた行の判別ができない気もします。。

>>878
その方法なんだと↑と同じなんですけど
小さい画像(ImageButton)クリックした時点でページがリロードされて
しまいます…

画像をクリックしたらそのウィンドウがリロードされることなく
選択行の情報から作成したパスの画像を別ウィンドウに表示したいの
ですけど無理なんでしょうか?
08838602006/08/30(水) 01:42:26ID:???
続き
実際はDBとImageButtonのNavigateUrlを連結したいんですけど
これだとクライアント側で別窓で開かせる際、
ウィンドウサイズ等の制御ができないですし…
08848732006/08/30(水) 15:09:58ID:???
>>882
イベントガチガイマス

ポストバックを発生させないで別ウィンドウを開くには
ページを開いた時点(htmlが生成された時点)で、
各行のimagebuttonのOnClickに適切なモノが設定されていなければならないということはわかるよね?
つまり、ボタンをクリックしたときにイベントが発生するItemCommandはおまいの目的には沿わないと。

じゃあ、ページを生成する前に発生するDataGridのイベントで、
行ごとのコントロールが可能なイベントといえば・・・?

ItemCommandでクリックされた行の判別をするには
SelectedItemかSelectedIndexプロパティを利用すれば良かったはづ…
時間があればDataGridのメンバの説明を一通り読んでみ。
読んだ後でテストコードが書ければ更によし。
0885nobodyさん2006/08/30(水) 19:19:52ID:???
>>882
878だけど、<a>の属性指定でtarget="_blank"で別のウインドウは開けるよ?
ただW3Cの人達は推奨しないし、サイズ指定は無理だね。
後はjavascriptぐらいしか、思い浮かばないなぁ
08868602006/08/31(木) 01:05:53ID:???
いつもいつもありがとうございます。
毎日仕事から帰って熟読させてもらってます。
>>884
イベントが違いましたか汗
そこで言われた内容を元に見つけました。
ItemDataBoundですね。
↓のサンプルコードを書きました。
Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
CType(e.Item.FindControl("Label1"), System.Web.UI.WebControls.Label).Text = e.Item.ItemIndex.ToString()
End Sub
Label1はDataGridの中の項目テンプレート中に配置しています。
これで他の列情報を元に小さい画像(ImageButton)にいろいろな設定を行う
ことができることがわかりました。
ですがだとパスを指定ができるだけで新規ウィンドウのウィンドウサイズ等を指定する
ことができず、これなら>>860のNavigateUrlに直結した時と同じ結果になる気がします。
そんなはずはないので正直自分が大きな勘違いをしていると思っています。
どこを勘違いしてますでしょうか?
やはりjavascriptを用いてウィンドウサイズを指定しつつ
新規ウィンドウの開くという動作はjavascriptをサーバー側から
クライアントに送り直すという動作からリロードがかかると思いますし
どん詰まりに陥ってしまいました…

行の判別についてはその通りであり反論は全くございません。
指摘されて気づきました。

再三のアドバイスにも関わらず未だ答えにたどり着けず申し訳ありません。
08878602006/08/31(木) 01:08:54ID:???
>>885
ウィンドウサイズを指定するにはjavascriptを使用する必要があり、
javascriptを行をクリックしてから作成しないといけない場合
サーバー側からクライアントに送信するという動作をサーバー側で
実行するためリロードが行われてしまう。
これが原因で悩んでいます。。
08888732006/08/31(木) 05:46:01ID:???
>>886
ポストバックが発生してしまうのは、Button、LinkButton、ImageButton、
このへんのASP.NETのコントロールはSubmitボタンとして生成されてしまうからだーね。

じゃあ、"ポストバックが発生しない"コントロールにOnClick属性を付けてあげやう。
Imageコントロールとか。
例1) Image1.Attributes.Add("OnClick", "ココにJavaScript")

htmlのボタン(Submitボタンはダメ)をサーバーコントロールとして実行→OnClick属性を行ごとに設定という手もある。
例2)
aspx側: <input id="Button2" runat="server" type="image" value="button" src="画像固定ならココで画像アドレス指定"/>
コードビハインド:
Button2.Attributes.Add("OnClick", "(ここでウィンドウのポップアップ)")
Button2.Attributes.Add("src", "(行ごとに画像変えるなら、こっちで画像アドレス指定)")

この2つの違いは、htmlで出力されたときにimgタグになってるかinputタグになってるかの違いだね。
後一息だからがんばれー。
0889nobodyさん2006/08/31(木) 17:39:15ID:???
ASP.netってなんでVIEWSTATEなんてのがあるわけ?
アホみたいになんでページのほとんどの情報をhiddenフィールドに格納してPOSTするんだろ。
ネットワークの帯域を無駄に浪費するような環境での開発に慣れてしまったPGはつぶしがきかな
いだろうな。
自分自身が「パフォーマンスのボトルネックになる場合がある」っていう機能を実装するMSって
迷惑なことばかりしてくれるよな。
0890nobodyさん2006/08/31(木) 18:01:21ID:xWZ7n96B
visual studio を使わずに
クラスライブラリへの参照を追加する方法ってないですか??
0891nobodyさん2006/08/31(木) 18:57:49ID:???
>>889
セッションでViewStateを管理するという方法もあるわけだが。
コントロールごとにViewStateの使用、不使用も設定できるしね。
パフォーマンスを気にするときにはそれなりの対応はあるよ。

そのへん何も考えてない子が多いのは確かだけどorz
この前、某国から上がってきたプログラムなんてViewStateがMB単位でな…アハハハ
0892nobodyさん2006/08/31(木) 22:57:44ID:???
>>889
お前みたいなアフォには思いつかないよなw
少なくともMSにいる人は君よりは賢いよw
08938602006/09/01(金) 01:33:45ID:???
>>873
なるほど、そういうことだったんですか。
例1にて試しまして無事動作しました!!!
数日かかっただけに感動しました笑
本当にありがとうございます。
例2も試したのですがページが動作自体は問題ありませんがページがリロードされてしまいました。
これでは要件が満たせれませんよね??
疑問が残るので自分が理解できているのか気になるのでお聞きするに至りました。
また、例1ではImageコントロールを採用したのですが、
submitボタンとして作成されないコントロール(だからと思う)なので
画像の上にマウスカーソルが重なった際、指の絵のカーソルに
変わらなくなってしまいましたがこれは対処法ないでしょうか?
当初の問題に比べると小さな問題ですが汗
こういう所も踏まえてきちんと動作しているサイトがあるので
すごく気になります。。
08948732006/09/01(金) 09:21:26ID:???
>>893
ゴメンね大嘘書いてゴメンね。自分でもサンプルコード書かなきゃダメね。

ASP.NETのボタン
 Button   :INPUT type="submit" として出力されるのでポストバック発生
 LinkButton :アンカータグ押したときにポストバック発生するようになってる。
 ImageButton:INPUT type="image" として出力されるのでポストバック発生
HTMLボタン
 button :ポストバック発生無し   (←自分で前に書いたときはコレを使ってたので勘違い)
 image :ポストバック発生
 submit :ポストバック発生

INPUT TYPEがimageかsubmitだとポストバックが発生と。
んで、ポストバック発生させないにはJavaScriptがfalseを帰すような書き方すれば良いと。
例) .Attributes.Add("OnClick", "window.open('http://www.google.co.jp'); return false;")


      Λ||Λ
     ( / ⌒ヽ  とりあえず恥ずいので吊ってくる
      ∪  ノ
     ∩∪∩
     (・∀・| |
     |     |
    ⊂⊂____ノ
08958602006/09/04(月) 01:43:22ID:???
すみません、返信したつもりがなぜか書き込めてなかった…
>897
今はおかげさまで無事動作しています。
結果的にはImageButtonコントロールを使用して
例を書いて頂いた通り
Attributes.Add("OnClick", "window.open('http://www.google.co.jp'); return false;")
としました。
付き合って頂いてありがとうございます。
Web系は初めてだったので取っつきにくかったですが
何となく理解できてきました。
何となく理解、ですが笑
0896nobodyさん2006/09/05(火) 21:41:43ID:???
質問です。
DataGridで編集ボタンなしでEXCELのようにセル(テーブル)を選択したら、
入力モードになるとかいう機能はなさそうなので・・・
わざわざボタンを押すのってわずらわしいので実現したいのですが
自分でjavascriptでコツコツ作るしかないですか?
0897nobodyさん2006/09/05(火) 21:43:55ID:???
ASP.NET 2.0の質問です。
aspxで定義した変数、オブジェクトをascxから参照することは可能でしょうか。
一aspxページに複数のascxを貼り付けたいのですが、変数は全てのascxで共有したいと思います。
0898nobodyさん2006/09/05(火) 23:48:30ID:???
>>897
HttpContext.Current.Items
0899nobodyさん2006/09/06(水) 00:33:46ID:???
>>896
頑張って自作してください。

もし業務で必要なら、サードパーティのコンポーネント(例えばGrapeCityのSPREAD .Net)を
利用する方が良いかもしれないね。予算&時間と相談するよろし。
0900nobodyさん2006/09/06(水) 18:44:18ID:???
アップロードされたテキストファイルのEncodeTypeを調べる方法って有りませんでしょうか?
09019002006/09/06(水) 18:46:57ID:???
すいません。言葉足らずでした。
アップロードされたテキストファイルがShiftJISでエンコードされた物かどうかを判別したいのです。
0902nobodyさん2006/09/06(水) 19:41:42ID:???
>>900
.Netでは用意されていなかったはずなので、
モジュールを自作or拾ってきて利用しる。
レス数が900を超えています。1000を超えると表示できなくなるよ。