トップページphp
986コメント449KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/07/17(火) 23:49:46ID:pyJr9yIy
●過去ログ
Part1 - 【質問】 ASP.NETスレ 【議論】
http://pc5.2ch.net/php/kako/1040/10406/1040698263.html

【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/

【質問】ASP.NETスレ Part3【議論】
http://pc11.2ch.net/test/read.cgi/php/1160355849/
0472nobodyさん2008/04/16(水) 19:22:41ID:???
日本語でおk
0473nobodyさん2008/04/24(木) 12:44:27ID:???
GridViewでヘッダーとか設定した後、手動でDataBindするとレイアウトが解除されて
ノーマルな状態でBindされてしまいますが、回避する方法ありますか?
0474nobodyさん2008/04/25(金) 13:26:05ID:???
aspx側でText='<%# item[0] %>'みたくバインドしたいのですが
cs側でitemをどのように宣言して扱えばいいのでしょうか?
itemはList<string>がいいのですが
0475nobodyさん2008/04/25(金) 13:33:58ID:???
すいません。ソッコー自己解決しました。そのままパブリック宣言でおkでした
0476nobodyさん2008/04/26(土) 21:37:48ID:???
publicよりprotectedの方が良いんじゃねーかなー…

>>473
DataBoundイベント時に設定すればええやん
0477nobodyさん2008/05/02(金) 13:15:08ID:???
画像をクリックした時に、セッション変数に値をセットした上で、別のページに遷移したいのですが、
ImageButtonのPostBackUrlに遷移先のページ、Clickイベントでセッション変数への値のセット
としてもうまく動きません(Clickイベントが発生しません)
こういう場合はどの様にするのがベストなのでしょうか?
0478nobodyさん2008/05/02(金) 20:51:29ID:???
>Clickイベントが発生しません
aspxのImageButtonソースとClickイベントを書いて
04794472008/05/03(土) 06:14:49ID:???
>>478
ImageButtonのソース↓
<asp:ImageButton ID="imgPass" runat="server" ImageUrl="~/img/header_pass.jpg" PostBackUrl="~/passwordchange.aspx"
ToolTip="パスワードを変更します" />

イベント↓
Protected Sub imgPass_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgPass.Click

Session("ChangePassword") = Session("LoginId")

End Sub

となっています。
Session変数に値をセットしている所にブレイクを貼っても、ここにきません。
ちなみに、masterページに書いています。
よろしくお願いします。
0480nobodyさん2008/05/03(土) 13:06:20ID:???
OnClick="imgPass_Click"の記述がないよ。

<asp:ImageButton ID="imgPass" runat="server" ImageUrl="~/img/header_pass.jpg" PostBackUrl="~/passwordchange.aspx"
ToolTip="パスワードを変更します" OnClick="imgPass_Click" />

としてみて。

0481nobodyさん2008/05/03(土) 15:54:40ID:???
作成したASP.netサイトを自マシンにインストールし
自マシンに対して外部(イントラネット内)に公開する事は出来たのですが、

自マシンで作成したASP.netサイト(Default.aspx)を
特定マシンに(IISインストール済み)配置(公開)するにはどうすれば良いでしょうか?

・WEBサイトのコピー
・WEBサイトの発行
をプロジェクトの上で右クリックして、公開したいPCを指定しても
エラー(失敗してしまう)になってしまいます。

0482nobodyさん2008/05/03(土) 16:17:23ID:???
>>481
アクセス権
04834812008/05/03(土) 16:50:09ID:???
>>482
> アクセス権
レスありがとうございます。
因みにアクセス権の設定を行う方法として次のうちどれを行えば良いのでしょうか?
(初心者ですみません。)

1.公開したいサーバ上の管理ツールよりアクセス権の設定を行う。
2.公開したいサーバ上のIISマネージャより設定を行う。
3.「1.」「2.」両方の設定を行う。
04844472008/05/04(日) 02:05:59ID:???
>>480
どうもです。
試してみたけど動きません。
マスターページじゃないaspxファイルに貼ったImageButtonだとちゃんと動くので、
masterページに書いているのが原因なのかな?とも思ってるのですが・・・

あと、ツールボックスからコントロールを貼り付け、コントロールをダブルクリックして
出来たイベントハンドラに処理を書いていて、他はOnClickとか書いてなくてもイベントが発生するのですが、
自分で書く必要がある場合ってどういう時なんでしょうか?
04854472008/05/05(月) 02:15:18ID:???
>マスターページじゃないaspxファイルに貼ったImageButtonだとちゃんと動くので、
色々試した結果、これ間違ってました。
正確には、「PostBackUrlプロパティに、自ページ以外のページが指定されている場合は、OnClickイベントが動かない」でした。
OnClickイベントは、PostBackされた後にサーバーで処理される。と理解しました(間違いがあれば指摘ください)

PostBackUrlプロパティを空白にして、OnClickイベントでServer.Transferで要件を満たせました。
色々ありがとうございました。
0486nobodyさん2008/05/05(月) 19:20:36ID:???
たまには息抜きにどうですか?
http://www.atmarkit.co.jp/fdotnet/aspdevura/index/index.html
笑いながら、「あるある!」って最後まで読んでしまった。
0487nobodyさん2008/05/05(月) 20:01:05ID:???
本当は、ASP.netをメインでやりたいのに
Windowsアプリの開発ばかりやるハメになってる。

WEB系やりてーよぉー。

.NET FrameWorkはかなり熟知してるんだが。。。
0488nobodyさん2008/05/06(火) 02:01:30ID:???
マスターページ機能って便利だけど、パフォーマンスが落ちたりするんでしょうか?
ヘルプの記述を見ると要求後にマージするとあるので、なんかパフォーマンスが
落ちそうな気がするんです。
asp.netを使うページだけmaster機能、性的なページはダイナミックWebテンプレート、とか
使い分けた方がいいんでしょうか?

ヘルプ
「ユーザーがコンテンツ ページを要求すると、マスターページとマージされて、マスタ ページの
レイアウトとコンテンツ ページのコンテンツが結合された出力が生成されます。」
0489nobodyさん2008/05/06(火) 18:26:19ID:???
cobolしか触ったことのない俺がとりあえずASP入門するのに最適な
サイト・書籍を列挙してくれないか?
VS2008が使えるやつで頼む。
0490nobodyさん2008/05/06(火) 19:25:20ID:???
>>489
> cobolしか触ったことのない俺がとりあえずASP入門するのに最適な
> サイト・書籍を列挙してくれないか?
> VS2008が使えるやつで頼む。
こぼら には無理
0491nobodyさん2008/05/06(火) 19:31:45ID:???
cobolのみならC#.netの入門書からがいいんじゃないか。
.net framework自体の知識も基礎は必要になるから。

vs2008対応のasp.netのよい本はまだ出てない。
「asp.netでいってみよう」は評判良いが発行は古く
asp.net2.0未対応。
0492nobodyさん2008/05/06(火) 23:04:06ID:???
>>489
COBOLerならJAVAに行くべきだな。
「Java for Cobol Programmers」がおすすめ。ただし邦訳はない、全部英語。
どうしてもASP.NETなら、古本屋で
「.NETのしくみとVB.NETプログラミング入門―COBOLユーザーに捧げる」
を買って読んでから、 「基礎からのASP.NET SE必修! (プログラマの種シリーズ) 」
かな。
0493nobodyさん2008/05/07(水) 17:37:55ID:???
すまん、ちょっと教えて欲しいのだが、
ClientのJavaScriptから、非同期でポストバックして.aspx.cs上のメソッドを実行させるか、
コールバックしてイベントを発生させることは可能?

適当なButtonを作成して、GetPostBackEventReference(this.Button1, "");でやってみたり、
PageにIPostBackEventHandlerを追加してRasePostBackEventメソッドにコールバックさせてみたり
したのだが、いずれもブラウザが再読み込みをしてしまう・・・

具体的には、TextBoxで特定キーを押下後に、TextBoxの中身を確かめて、
特定の表示をしたいんだけど、JavaScriptでOnKeyUpをキャプチャーし、押されたキーを判断し、
JSでポストバックし、再読み込みせずにaspx.cs上のメソッドを実行させたいんだけど、
そんなことって可能ですか?(´・ω・`)
0494nobodyさん2008/05/07(水) 20:51:48ID:???
他スレで質問したところ解答が無いので
こちらでも質問させて下さい。

ASP.netで特定のサーバにhoge.aspxを配置して稼働させる方法は、
お蔭様で分かったのですが、これまではロジックを
 hoge.aspx
の中にゴリゴリ書いていたものをロジックを別クラスに分けて
コンパイルを行った上で同様の手順でサーバに配置したところ
「このアプリケーションは利用できません。」
なるエラーメッセージが表示されてしまいます。一体何が原因なのでしょうか?
(同様の手順でコンパイルしIISに配置しています。)
0495nobodyさん2008/05/07(水) 22:06:05ID:???
>>493
昔調べた限りでは出来なかった。AjaxExtensionでも入れれば。

>>494
VisualStudio使えば?
そんなエラーメッセージだけからでは理由がつかめないから、
例外をキャッチして詳細なエラーを吐くページを作っとけ。
適当予測ではApp_Code以下に置いてないとか。
あと、別にコンパイルは必須ではない。
0496nobodyさん2008/05/07(水) 22:24:10ID:???
>>495さん
レスありがとうございます。
普通にVisualStudioは使っています。
追加したクラスファイルは、普通にApp_Codeに入っています。

プロジェクトの上で右クリック → 新規項目の追加 → VBクラス
とするとVisual Studioの方から誘導する様なメッセージが表示されて
App_Code直下に配置されたと記憶しています。

原因はどうもIISの設定っぽ気がするのですがいまいち分かりません。
明日もう一度試してみようと思います。
0497nobodyさん2008/05/07(水) 22:26:37ID:wvo/I4za
ASP.NETには直接関係ないかもしれないけど、英語版Visual Studio使ってます
もちろんMSDNが英語だけど、日本語版MSDNに置き換えることってできますか?
0498nobodyさん2008/05/07(水) 22:34:48ID:???
>>495
そのAJAXでできないのよ・・・
再読み込みナシで、特定のメソッドを実行できればいいんだけど・・

>>496
俺はC#だから外しているかもしれんが、
作ったClassのNameSpaceをUsesしていないだけでは?
0499nobodyさん2008/05/07(水) 22:56:49ID:???
>>498
using ***の事ですか?
VBだと imports?
0500nobodyさん2008/05/07(水) 23:05:55ID:???
>>499
そそ、using
C#だと、普通にClassを作った限りでは、usingしなくても使えるけど。
表示されるエラーをすべて晒してみるのが手っ取り早いと思う。
0501nobodyさん2008/05/07(水) 23:08:35ID:???
>>496
マルチ乙
0502nobodyさん2008/05/07(水) 23:13:51ID:???
>>500
> そそ、using
> C#だと、普通にClassを作った限りでは、usingしなくても使えるけど。
> 表示されるエラーをすべて晒してみるのが手っ取り早いと思う。
それがどうもIIS側の設定っぽいエラーなんです。
エラーを晒したいのですが環境が自宅には無くて出来ません。
明日、>>500さんに教えて頂いた事を踏まえていろいろ試してみて駄目だったら
エラー内容を控えてこちらにてご質問させて頂きます。

0503nobodyさん2008/05/08(木) 18:21:52ID:???
>>498
Remotingかwebサービスで対応できると思う
0504nobodyさん2008/05/08(木) 19:09:51ID:???
>>503
ありがとう
なるほど、できるっぽいけど煩雑な手順を踏まないといけないのね・・

いちおうLinkButtonか、Buttonをスタイルシートで非表示状態、
または背景と同じ色で配置して、このコントロールのイベントを利用することで、
仮想的に特定のメソッドを実行させてるけど、あまり美しくない・・・

IPostBackEventHandlerを継承したユーザコントロールを作ったりすれば、
少しはキレイになるのかしら・・・
0505nobodyさん2008/05/08(木) 22:03:15ID:???
>>504
クエリ文字列かなにかをもとに目的の処理をするaspxを作っておいて、それにXHRでリクエスト投げる
という単純な方法じゃだめなの?
0506nobodyさん2008/05/08(木) 22:52:47ID:???
ActiveDirectory ドメイン環境で、
iisのアクセス権の設定で、基本認証にすると
ユーザ、パス入力のダイアログ出るんですけど、
クライアントPCにすでにドメインログオンしてるので、
ダイアログ出さずに認証通したいのですが、
どうやればいんでしょう…。

以前、IEだとダイアログなしで認証できてたサイトがあったので、
方法はあると思うんですけど。firefoxとかだとダイアログでてました。
05075062008/05/08(木) 23:25:54ID:???
一応自己解決
web.configに
<identity impersonate = "true" />
追加でできるらし。

ここでもうひとつ疑問点。
ドメイン外に設置したサーバ上のwebページで、
ドメイン内からアクセスしてきた、ログオンユーザの
ユーザ名を取得する方法ってないでしょうか??
0508nobodyさん2008/05/10(土) 21:35:41ID:???
web.configにパラメータを設定したいのですが
web.configへのキーの追加方法が記載された、何か参考になるサイト()はありますあか?

現在、web.configに適当にキーを設定してプログラムから読み込み、コンパイルを
するとweb.configへのキーの書き方が違っているみたいでコンパイルエラーが出てしまいます。
0509nobodyさん2008/05/10(土) 23:06:03ID:???
俺.configにパラメータを設定したいのですが、
俺.configへの彼女の追加方法が記載された、何か参考になるサイト()はありますあか?

現在、俺.configに適当にキーを設定してアーッ!
0510nobodyさん2008/05/10(土) 23:54:33ID:???
http://msdn.microsoft.com/ja-jp/library/ms228112(VS.80).aspx
0511nobodyさん2008/05/11(日) 00:10:46ID:???
>>510
さんくす
0512ASP.net初心者です男2008/05/12(月) 22:25:01ID:???
画面を上下に分割して(つまりFrameで上下に20% / 50%)画面上部に社員番号を入力し
「検索」ボタンを押すと、画面下部の詳細画面に詳細結果を出力するにはどうすれば良いでしょうか?
ベテランの人お願いします。

Default.aspx
SearchTop.aspx
Result.aspx

[ Default.aspx ]
*****************************************************
[ SearchTop.aspx ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

社員番号  ■■■■■■    [ 検索 ]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[ Result.aspx ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

社員番号  1234
社員名   とまお 好き男

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*****************************************************




0513nobodyさん2008/05/12(月) 22:27:15ID:???
Frameヤメレ
0514nobodyさん2008/05/12(月) 22:43:30ID:???
MasterPageは使いたく無いのです。
確か何かFrameに対するtargetを指定して実行する方法があったと思うのですが。
お願いします。
0515nobodyさん2008/05/12(月) 23:16:45ID:???
>>514
今どきframe使うのがいるのに驚いた。
frameは非推奨タグなの知らないの?

なんでMasterPageが出てくるんだ?
MasterPageは便利な機能だが必須ではない。
0516nobodyさん2008/05/12(月) 23:56:21ID:???
>>515
ええっホントですか?如何せん、ASP.net初心者ですので。
始めて知りました。因みに推奨されている方法にはどんな物がありますか?
0517nobodyさん2008/05/12(月) 23:57:25ID:???
AjaxとClientCallBack関数の違いってあるんですか?
そもそも両者JavaScriptをか介しますが。
0518nobodyさん2008/05/13(火) 00:56:57ID:???
>>515
frameの件は.NET関係ない。残念ながら常識のレベル。
なお、.aspxにDB接続とかのロジック書いたりもやめるように。

で、一つの方法としてだがDefault.aspxにTextBoxとButtonとGridView、
SQLDataSourceを置いてバインドしてやるのが一番楽じゃね。
初回表示時にGridViewを見せたくないならvisible = falseするなり、
検索ボタン押下のタイミングでDataSourceとパラメータをセットして、
DataBindしてやればいいと思う。
検索窓をわざわざフレーム切りたいってことは、使い回しをしたいということかな。
もしそうなら、セットでユーザーコントロールにでもしておけばOK。
意味不明なら初心者本でもどうぞ。

>>517
方法論に対する実装の一つ。
つか、AJAX Extensionのように.NET側から
動的にコントロールを更新できないので、俺の用途ではイラネ。
0519nobodyさん2008/05/13(火) 00:57:25ID:???
アンカーミス
>>515 ×
>>516
0520nobodyさん2008/05/13(火) 01:07:39ID:???
>方法論に対する実装の一つ。
なんか違うな…。スマン。
正確な用語を使える程のレベルじゃないのでこのまま逃げます。
0521nobodyさん2008/05/13(火) 01:46:15ID:???
>>518
> 検索窓をわざわざフレーム切りたいってことは、使い回しをしたいということかな。
使いまわしたいって分けではないのですが、あえて検索結果を別フレームに表示
する事がDataGrid ・ GridView双方で出来るのか試してみたいのです?

1ページで行う事は普通に出来ます。
敢えて別フレームに結果を表示したいのです。
0522nobodyさん2008/05/13(火) 05:21:32ID:???
>518
>.aspxにDB接続とかのロジック書いたりもやめるように。

これはどういう意味ですか?
DB接続のコードは書籍なんかでもaspxファイルに書かれて
いるようですが、なにか問題はあるんですか?
0523nobodyさん2008/05/13(火) 05:27:32ID:???
>>521
フレーム使ってファイルを複数に分断するデメリットが大きい。
フレームで作るのは10年前の作り方という気がする。
商用Webサイトでフレームつかってるところがほとんど
なくなったの考えてみて。

まぁDataGrid使ってみれば分かるよ
結果のソート、ページングなどもできて便利。
0524nobodyさん2008/05/13(火) 10:28:06ID:???
521じゃないけど
でも実際はSEOの関係でフレーム非推奨になったわけで、主な用途はイントラなんで
代替となる機能がサクッと実現できないのが困る。
0525nobodyさん2008/05/13(火) 23:26:50ID:???
まぁ確かにそれもあるんだけど、それを言ってしまうと、
VB6の方が何でも出来てよくなかった?とかその辺の話にな(ry
0526nobodyさん2008/05/14(水) 21:34:17ID:???
>>522
クイックチュートリアル読んで、
コードビハインドの意味を考察してみるといいよ。

MS謹製の書籍でも.aspxにビジネスロジック書いてたりすることがあるが、
説明しやすくためであるのと実運用で使うのは意味が異なる。
0527nobodyさん2008/05/15(木) 00:50:53ID:???
>>522
できるよ。
以上。
↓次の方どうぞ
0528nobodyさん2008/05/15(木) 10:34:44ID:???
コードとビジネスロジックの分離。
3階層 とか ObjectDataSource とか でググれ

つづきはwebで・・・
0529nobodyさん2008/05/15(木) 21:21:11ID:???
現在VS2005で勉強がてらクライアントコールバックを勉強しているのですが、
これって基本的な動きはAjaxと同じですよね?

あとパフォーマンスの面で、

・ASP.net Ajaxをインストールして使用
・クライアントコールバックで代用


どちらの方が良いでしょうか?
0530nobodyさん2008/05/16(金) 10:25:05ID:???
・ASP.net Ajaxをインストールして使用
0531nobodyさん2008/05/16(金) 23:17:17ID:???
FormViewのHeaderTemplateとItemTemplateにそれぞれラベルなどをおく。
Headerの方のラベルにFormViewに関連付けたSQLDataSourceコントロールからバインド。
ItemTemplateの方のラベルに別のSQLDataSourceコントロールの値を設定したい。

FindControlでFormView.Row.Findcontrol(///)でラベルを参照して、設定してやろうとすると
うまく設定できたり、逆にRowが見つからない(=オブジェクト参照がry)のエラーでとまったりと
メチャクチャな動きをしやがる。

大体100回トライしてみて90回くらい失敗、残り10回くらい成功する。
ソースは全く書き換えてない。

似たような経験の片いらっしゃいません?
0532nobodyさん2008/05/16(金) 23:49:09ID:???
毎回同じデータが取られてる?
データ取りの処理に問題あるのでは?
0533nobodyさん2008/05/17(土) 00:05:07ID:???
>>530
ASP.net Ajaxをどうしてもインストールしてはダメな環境です。

因みに自分でASP.net+Ajaxの原始的な方法でAjaxを実装したのですが
飛ばし先のhoge.aspxのPage_Loadの中で
  Response.Write("呼出元のhtmlページに返す文字");
と記述すると呼出元のページではResponse.RequestTextには
<!Document*** という余計な文字列も返されてしまうのですが
何か良い方法はありますか?
私は、JavaScriptで次の通り「」の中の部分のみを切り取って出力
しています。
そもそも、この様な方法でも問題無いのでしょうか?

「 呼出元のhtmlページに返す文字 」 <!Document ***
0534nobodyさん2008/05/17(土) 00:20:53ID:???
Response.Write("呼出元のhtmlページに返す文字");
Response.End();
0535nobodyさん2008/05/17(土) 00:28:21ID:???
>>534

試してみます!!

あざぁーっっっっっっっす!!








0536nobodyさん2008/05/17(土) 06:22:24ID:???
>>514
自分も昔ここで同じ質問したことあるんでそのときの経験談書きますね。
まぁ既に出てる話ですので参考程度に。

1.フレームはとにかく推奨されない
2.フレームなしに書き直したところ意外に利便性は変わらない
3.バグが発生したとき対応にすごく困る状況になりやすい

2と3が主な理由ですね。
0537nobodyさん2008/05/17(土) 13:25:15ID:71sy1o27
以下の様なことをやろうとしています。

@リクエスト 
→セッション新規作成、セッションIDの名前のファイル作成

Aリクエスト
→セッションがすでに存在すれば、
 セッションIDの名前のファイルに情報を書き込み、サービスにも利用

Bセッションタイムアウトなどによりセッション破棄
→セッションIDの名前のファイルを削除

で、Bをどのように実装すればよいかで困っています。

3のセッション破棄を検知したいのですが、
global.asaxのSession_Endでは
破棄されるセッションIDが取得できないようですし。

何かいい方法ありませんか?
0538nobodyさん2008/05/17(土) 19:55:36ID:???
自分の目が節穴で無ければ、this.Sessionで見えてるこのオブジェクトはなんなのだろう。
0539nobodyさん2008/05/18(日) 23:57:40ID:???
そうやって決めうちで削除したり、何かを作ったりするのはやめたほうがいい
ClassにPage.Sessionを渡して、あとはClassに処理させる。

Classでは、Page.Sessionのindexをなめて作成したファイルと比較し、
新しいSessionObjectがあればファイル作成、
なければ削除という処理を行う。
これをページを作成するごとに繰り返せばok。
0540nobodyさん2008/05/19(月) 00:20:18ID:???
>>536
あざーす。参考にさせてもらいます。
0541Ajax 12008/05/20(火) 21:54:07ID:???
Ajaxの勉強をしているのですが@ITを参考に次の様にコードを入力してVS2005にて
実行をしたところエラーが出てしまいます。どうすればAjaxを実行出来ますか?
(Ajax.dllは参照済みです。)
[ AjaxXML.aspx ]
<!--
AjaxXML.GetMessageOfTheDay(GetMessageOfTheDay_CallBack);
function GetMessageOfTheDay_CallBack(response)
{
alert(response.value);
}
-->
</script>
[ AjaxXML.aspx.vb ]
Imports Ajax
Partial Class AjaxXML
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Ajax.Utility.RegisterTypeForAjax(GetType(AjaxXML))
End Sub
<Ajax.AjaxMethod()> _
Public Function GetMessageOfTheDay() As String
Return "Experience is the mother of wisdom"
End Function
End Class
0542Ajax22008/05/20(火) 21:55:07ID:???
[ web.config ]
<system.web>
<httpHandlers>
<!-- Register the ajax handler -->
<add verb="POST,GET" path="ajax_/*.ashx"
type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
  ・・・
[ エラー ]
Microsoft _JScript 実行時エラー:'AjaxXML'は宣言されていません。
0543nobodyさん2008/05/24(土) 00:42:12ID:???
これまでWindowsアプリをメインに作って来たのですが、私一人しかいない現場で
私がASP.netアプリを作る羽目になりました。

作業内容として只単純に、データの照会(取引の一覧を取得し画面に表示するだけ)
を行うだけなのですが、私の作成した画面のレイアウトは
 ・Label
 ・Table
コントロールを***.aspx画面に張りつけてその項目に値をセットしているだけなのですが
この方針って間違ってますか?

スタイルシートの知識とかは無いので.NETのデザイン画面で適当にデザインをして
(スタイルシートなんて使わず)ドラッグしてピヨーッと伸ばして行・列幅の調節
をしています。(html / StyleSheet / JavaScriptについてはアマチュアレベル)

ASP.net(.NetFrameWorkについては結構詳しいです。)に関して実務経験豊富な
ベテランの方如何でしょうか?ご意見を聞かせて下さい。
0544nobodyさん2008/05/24(土) 01:18:22ID:???
>>543
一覧表示に適したコントロールならGridViewがある。
GridViewは表示対象をDataSetまたはDataTableオブジェクトとして扱って
バインドさせるだけでおk
0545nobodyさん2008/05/24(土) 12:46:33ID:???
と、言うかその程度なら別にASP.NETとWindowsFormで違いないだろ。
0546nobodyさん2008/05/24(土) 12:49:50ID:taKpBKe5
GridViewでヘッダの表示を固定することってできますか?
エクセルの「ウィンドウ枠の固定」みたなやつで、沢山の行があって
下にスクロールしてもヘッダだけは画面上に表示されるようにしたいのです。
やり方を知っていたら教えてください。
0547nobodyさん2008/05/24(土) 13:42:15ID:???
CSSで出来る。ググレ
0548nobodyさん2008/05/24(土) 18:41:07ID:???
上でフレームの話が出てたけど、フレームの代わりにdivでスクロール表示させて表示したいけど、
ウィンドウいっぱいに表示するのが、IE6だとうまくできません。参考になるサイトありませんか。
0549nobodyさん2008/05/25(日) 16:09:24ID:???
>>548
>>228と同じ内容なら>>229
「Repeater」コントロールで<div style="float:left;">
0550nobodyさん2008/05/25(日) 19:56:25ID:BMpN20e7
エクセルとかPDFをサーバー側で作るとして、それをダウンロード画面に表示するのはどやってるの?
「保存」とか「開く」とか出る画面を出したいけど
0551nobodyさん2008/05/26(月) 00:08:03ID:???
>>550
Response.WriteFileで本当ならOK。
だけどちょっと大きなファイルを扱おうとするとエラーを吐きやがります。
なので下記ページのサンプルコードのような書き方をすれば良いかと。
http://support.microsoft.com/kb/812406/ja
05525502008/05/26(月) 21:04:10ID:4YPDbsMz
>>551
あざーす。
ちなみに、これですと物理ディスク上のファイルをResponse.OutputStream.Write()で書き込みしてますが、
物理ディスク上のファイルでないと無理でしょか?たとえば、エクセルなどは動的に作ったらディスクに保存せず
そのままクライアントに流したいのですけど
05535502008/05/26(月) 23:03:08ID:4YPDbsMz
自己レスです。
.NETではファイル生成しなければ無理みたいですね。失礼しました。
0554nobodyさん2008/05/26(月) 23:20:56ID:???
釣りかマジかどっちだ??
05555502008/05/26(月) 23:30:41ID:???
え?
マジでしょう。スプレッド.NETとかっての使うのは無しの場合では、無理っぽい(らしい)けど、方法ありますか?
0556nobodyさん2008/05/26(月) 23:50:17ID:???
言ってる意味多分わかった気もするけど>>552の日本語が悪いだろ
05575502008/05/27(火) 00:51:48ID:???
すいませんです^^;新米なので
05585512008/05/27(火) 01:25:43ID:???
>>550
Excelデータのバイト配列が作れる状況ならファイル生成なんて不要。
要はResponse.OutputStreamに必要なデータをWriteできれば良し。
そのデータは当然ファイルから作っても良いし動的に作っても良いわけで。

自分の経験としてはウェブサービス経由で取得したExcelデータを
ウェブサーバ上ではファイルを作成せずに
そのままクライアントに返してました。

ただ,どうやってExcelデータを動的に作成するのか知らんけど
バイト配列を作成する手っ取り早い方法として
一旦保存してFileStreamを読むことになることはあるかもしれん。
0559nobodyさん2008/05/27(火) 11:19:57ID:???
GridViewの内側の罫線はデザイナから変更できないのでしょうか?
BorderColorプロパティでは外側しか変更されないのですが…
0560nobodyさん2008/05/27(火) 11:34:28ID:???
質問です。
FormViewをHTML展開したときに、デフォルトでは
tableが構築されるけど、これを<p>とか<div>にしたい場合は
どこをいじればいいのでしょう?


>>559
GridViewのGridLinesプロパティとか?
05615592008/05/28(水) 10:28:14ID:???
>>560
ありがとうございます。
解決しました。
0562nobodyさん2008/05/28(水) 16:58:40ID:BjXoHKSe
phpからasp.netに移行しようと思って昨日から勉強しています。
あるサイトのサンプルコードを見て疑問に思ったのですが、

<form runat="server">
  <asp:ListBox id="lb_Address" runat="server">
    <asp:ListItem>東京</asp:ListItem>
    <asp:ListItem>神奈川</asp:ListItem>
    <asp:ListItem>千葉</asp:ListItem>
    <asp:ListItem>埼玉</asp:ListItem>
  </asp:ListBox>
  <asp:TextBox id="tb_Name" runat="server" />
  <asp:Button id="btn_Submit" Text="Submit" runat="server" />
</form>

なぜこのようにわざわざaspの独自タグ?(サーバコントロールと書かれていましたが)で記述するのでしょうか?
phpからきた自分としては、htmlで出来る部分はhtmlでやって、
プログラム的な部分だけC#なりVB.NETなりで記述するものなのでは?と思ってしまうのですが、
これはhtmlで<input>等と直接記述するのと比べて何か意味があるのでしょうか?
馬鹿っぽ質問で申し訳ないですがよろしくお願いします。
0563nobodyさん2008/05/28(水) 17:09:52ID:???
>>562
<asp:....>の部分はIISで適当なHTMLタグに置き換えられて
ブラウザに送信される。
<aspの部分をそのまま送ったらブラウザが理解できない。

asp.netはブラウザの種類を判別して、最適なタグに
置き換えてくれるのだ。
05645622008/05/28(水) 17:32:16ID:BjXoHKSe
>asp.netはブラウザの種類を判別して、最適なタグに
>置き換えてくれるのだ。
そうだったんですかー
納得できました。どうもありがとうございます。
0565nobodyさん2008/05/28(水) 21:32:20ID:HG8kee+E
>>562
htmlで出来る部分はhtmlでやって、プログラム的な部分だけC#、とは言っても、
リストボックスを例に出すぐらいだから、ユーザの選択内容をプログラム側に渡すでしょ?
PHPで言うところの$_POST["lb_Address"]みたいにさ。

ここで$_POSTと同じ役割の機能としてASP.NETでは、Request.Form["lb_Address"]と書けば、
リストボックスの選択内容をサーバ側コードで一応取得できるんだけど、これはASP.NETの
標準的なプログラミングモデルではやってはいけない。
代わりに、lb_Address.SelectedValueみたいな感じで取得する。

逆に、リストボックスのどれかの値をあらかじめ選択した状態のページを生成する場合、
PHPならprintでselectとoptionタグを書き込むだろうけど、
ASP.NETでは同じようにResponse.Writeというもので一応直接htmlタグを出力することも出来るが、
やっぱり普通はやっちゃいけない。代わりにthis.lb_Address.SelectedIndex = 3みたいな感じでセットする。


PHPやASPからだと、そのへんの考え方を理解するのに少し時間がかかるかも
0566nobodyさん2008/05/28(水) 21:36:52ID:???
コニツワ!

ASP.NETに、PortalAPI(JSR168風な)ってあるん?
05675622008/05/28(水) 22:04:30ID:???
>>565
ご丁寧にどうもありがとうございます。
phpユーザの為に似たような書き方もできるようにしてるけど推奨されないということですかねー
少し考えていた感じとは違うので時間かかりそうですが、
1からやるつもりで頑張っていきたいと思います。
0568nobodyさん2008/05/29(木) 00:51:41ID:???
とどのつまり、オブジェクト指向ってことです
0569nobodyさん2008/05/31(土) 03:24:26ID:???
DBのフィールドを見て処理を分岐させるために、
SqlCommand.ExecuteScalar()で値を取ってきているのですが
フィールドがNULLの場合もあります。
こういう場合はどのような型で結果を受けるべきなのでしょうか?
Nullable(Of Integer)では落ちました。
DBNULLとVBのNothingは違うということなのかな…。

今はとりあえずObject型で受けてから、IsDBNull()で聞いて分岐させてます。
0570nobodyさん2008/05/31(土) 11:45:42ID:???
>>569
DBNull.Value
0571nobodyさん2008/05/31(土) 17:24:10ID:???
ありがとうございます。
0572nobodyさん2008/06/01(日) 18:04:07ID:???
排他制御について質問です。
一覧表示->更新処理が行える画面なのですが、
ユーザーAとBが同時に一覧を取得して、先にAがあるレコードを更新した場合
Bはもう一度一覧を取得し直さないと更新が行えないようにしたいです。

現在はSqlCommandのTransactionを利用して以下のような流れです。
1.更新前処理で更新対象行のレコードから、全項目を取得
2.取得した項目をキーとしてSELECT実行
3.存在ありならば更新がかかっていないとみなしてUPDATE->Commit
 存在なしならば他から更新されたとみなしてRollback->更新を促すメッセージ表示

GridViewのUpdateメソッド、およびテーブルにDateTimeの列を追加等が
出来ない環境なのですが、他に良い案や定石などありますでしょうか。
なお、同時更新は滅多に起こることのない環境です。
■ このスレッドは過去ログ倉庫に格納されています