【質問】ASP.NETスレ Part3【議論】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/09(月) 10:04:09ID:luJDzNn3Part1 - 【質問】 ASP.NETスレ 【議論】
http://pc5.2ch.net/php/kako/1040/10406/1040698263.html
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/
0612nobodyさん
2007/04/25(水) 00:27:48ID:???よくaspxをコピペするときにRegisterブロックあたりまでコピペしてしまって
コンパイルエラーの原因がわからず泣いてる奴がいるよな。
0613nobodyさん
2007/04/29(日) 15:25:29ID:???標準のブラウザを火狐等にしても、IEが立ち上がってきてしまいます。
オプション等を全部見たのですが、環境のところにWebブラウザという項目があったものの、
それらしいところが見つけられませんでした。
0614nobodyさん
2007/04/29(日) 16:31:14ID:???デフォで"Webページの実行"みたいな名前の項目のすぐ下に
Webブラウザを選択して表示みたいな項目があってそこで
ブラウザの変更はできた。
項目の正式名称は忘れたw
0615nobodyさん
2007/04/29(日) 22:38:45ID:???ソートせずに、そのまま更新ボタンおせば該当行が更新モードになります。
しかし、ソートした後に更新ボタンを押すとソート前の行が編集モードに
なってしまいます。いろんなサンプル見ましたが、このことにふれたソース
がなく、悩んでいます。どなたかご存知でしたら教えてください。
0616nobodyさん
2007/04/30(月) 02:26:32ID:???データをDBから読み込んで、DataGridで表示しています。
ソートせずに編集ボタンおせば該当行が編集モードになります。
しかし、ソートした後に編集ボタンを押すとソート前の行が編集モードに
なってしまいます。いろんなサンプル見ましたが、このことにふれたソース
がなく、悩んでいます。どなたかご存知でしたら教えてください。
0618nobodyさん
2007/05/01(火) 20:11:30ID:???自己レス。
解決しましたのでこの質問はなし。
0619nobodyさん
2007/05/04(金) 14:59:15ID:Fic8rDCBLAN内の別PCや自宅PCからは普通に接続できます。
そしてなぜかASP.NET自体タイムアウトで接続できない状態です。
再起動するもダメです。
何か設定が必要なのでしょぅか?
0620nobodyさん
2007/05/04(金) 19:59:17ID:???どんなネットワーク構成図?
どんなネットワークではうまくいっていて、そのネットワークの何をどうしたの?
>現在はLANで接続
現在はって、昔はWAN接続?
>「localhost」ではサーバーを立てているPCから接続できなくなりました。
localhostで、何から何に接続できないの?
>LAN内の別PCや自宅PCからは普通に接続できます。
サーバと同一LAN内の別PCや自宅PCでlocalhostで接続したの?
>そしてなぜかASP.NET自体タイムアウトで接続できない状態です。
どこから接続してタイムアウトになるの?
「なぜか」だと思う理由は?
サーバのIPアドレス直入力では接続可能?
127.0.0.1ではどう?
0621nobodyさん
2007/05/07(月) 00:54:06ID:???AutoDetectに設定すると検索ロボットからのアクセスでログが荒れる
のだけれども、UseDeviceProfileだと設定を作っていくのが面倒。
しかもプロファイルを設定してないUAでくると……
UserAgentに「Yahoo」とか「Google」の文字があったら無条件で
非Cookielessセッションに切り替える方法ってない?
現在はUseDeviceProfileを使用してMozillaを継承したbrowserファイル
でなんとか制御中。Defaultを直接継承して「yahoo」にマッチするように
設定してみたんだけど、なぜかMozillaのほうが優先されてしまう。
0622nobodyさん
2007/05/07(月) 22:11:59ID:28dJTdJ9本当にないと思ってるのか
直接Writeしないとできないことはまだ多い
0623nobodyさん
2007/05/07(月) 22:15:22ID:???0624nobodyさん
2007/05/08(火) 02:35:36ID:???普通のFormならpictureboxを使用して描画できると思いますが、ASP.NETではどのような手法がありますか?
0626nobodyさん
2007/05/08(火) 10:04:00ID:???たとえば、blogにあるwebPingを受け付けるサービスを作りたい場合、
blogからpostされたxml形式のwebPingの内容を取得する方法を教えてください。
0627nobodyさん
2007/05/08(火) 11:04:40ID:???で、正規表現を使ったURL書き換えが紹介されていたので早速実装してみました。
書き換え規則はこんな感じです。
<add url="~/users/(.*)\.aspx" mappedUrl="~/users.aspx?u=$1"/>
URLの書き換えはうまくいったのですが、そのファイルの中に
<script type="text/javascript" src="js/swfobject.js"></script>
<link rel="stylesheet" type="text/css" href="css/RootStyle.css" />
などの外部ファイル参照があるのですがこれらがことごとく失敗します。
開発中の環境とURLが違うためにURL指定することはなるべく避けたいわけです。
そこでsrc="/js/swfobject.js"のようにルートからの絶対パスで書いたのですが
これもうまく解釈されません。
なにか上手い方法をご存知ありませんか?
0628624
2007/05/08(火) 11:31:36ID:???bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
とすると、新しいページに画像だけが表示されますが、
特定のImageコントロールに表示するには、やはり画像
ファイルを一時保存して、ImageUrlを指定しなければならないでしょうか?
0629nobodyさん
2007/05/08(火) 12:15:21ID:???xmlっても普通にstringのpostだからRequest.Formで取得できるのでは?
>>627
それじゃ、そのaspxのあるディレクトリ配下指定だよ。
HttpServerUtility.MapPathのServer.Mappthを使うと幸せになれるかも。
0630nobodyさん
2007/05/08(火) 12:25:43ID:???昔、classicなaspでやってたときは、確か、たとえば
bitmap.aspで、Response.BinaryWriteでbitmapを出力するだけのaspを作って、
<img src="bitmap.asp">とかってよくやっていたものだが、
同様にして、BitmapButtonのImageUrl="bitmap.aspx"すればだめかな?
0631nobodyさん
2007/05/08(火) 13:09:10ID:???Bitmap出力するだけならashx使っても良いし、
またはdefault.aspx?mode=bitmapみたいな
urlをImageUrlに使ってクエリ文字列"mode"が"bitmap"
の時は画像を出力するというふうにしてもいいと思う。
データの受け渡しはSession変数使うのがいちばん簡単かな。
0632nobodyさん
2007/05/08(火) 13:24:41ID:???データの受け渡しってのはbitmapのことじゃない。
ページのクラスのフィールドに文字列を保存しても次のリクエスト時には消える
から、何か画像の生成に必要な一時データがあるならの話ね。
0633nobodyさん
2007/05/08(火) 13:29:02ID:???stringのpostだけど、Formの名前?がわからない。
ttp://www.nurs.or.jp/~sug/homep/rss/rss5.htm
FormのTextをSubmitするのではなく、こんな感じで送られてくるので。
0634nobodyさん
2007/05/08(火) 13:41:15ID:???DataBaseのPrimayKeyとかを渡して、そのIDの画像を表示するとかのことね。
ただSessionが消えることを考えると、文字としてaspxに埋め込まれるGETの方が
ブラウザのキャッシュに残ったときや、戻る進むで遷移したときに対処しやすい。
そもそもSessionでデータを引き渡すだけでいいなら、aspx?mode=bitmapも必要ないし。
>>633
そのaspxに対してstringなデータとしてpostされてくることは確かなわけ?
であれば、Request.FormはRequest.Form[i]のようにindexで取得できるのでキー名は不要。
もし知りたいならRequest.Form.AllKeysですべてのキー名が取得できるが、試してみた?
まずはmsdnを嫁。
0635nobodyさん
2007/05/08(火) 13:50:10ID:???そのようですね。
/を最初につけるとルートからの指定ってのがあったと思ったんですけど。
./と同じ解釈になってしまうのってなんか釈然としません。
まーDosやうにくすとは違うってことでしょう。
>HttpServerUtility.MapPathのServer.Mappthを使うと幸せになれるかも。
物理アドレスがソースに含まれてしまうみたいですね。
これは怖いです。
RequestからUrlのベースをパースするとかめんどくさいことやればなんとか
なりそうですが、書き換えルールにディレクトリを含めるのをやめるのが
一番簡単かもしれないですね。
<add url="~/users_(.*)\.aspx" mappedUrl="~/users.aspx?u=$1"/>
0636nobodyさん
2007/05/08(火) 13:56:01ID:???いやだから、物理アドレスから、IISでいうところのwwwrootまでを削れば、
IISのルートフォルダを起点とした絶対パスが取得できるのでは?
(デフォルトのIISのインスト環境)
それがいやなら、完全に手動で
../../../js/swfobject.js
のようにルートまで/../../を使ってもどって指定してやればいい。
↓参考
http://www.ipa.go.jp/security/awareness/vendor/programming/a05_02_main.html
0637nobodyさん
2007/05/08(火) 14:08:39ID:???>そのaspxに対してstringなデータとしてpostされてくることは確かなわけ?
確かなわけです。 というか、webPingの仕様がそういうものだから。
Request.Form.AllKeysは気付かなかったけれど、
Request.ContentTypeが"text/xml"であることを確認してRequest.InputStreamで全部ぶっこぬいたらうまくいきました。
たぶん。
0638nobodyさん
2007/05/08(火) 14:32:11ID:???ああ、なるほど。
IISのルートフォルダを起点とした絶対パスは
どちらも同じなんですよ。
そのルートフォルダを起点とした絶対パスを
うまく指定する方法がなくて困ってるわけです。
開発環境
localhost/js/…
localhost/css/…
公開AP
www.app.net/js/…
www.app.net/css/…
アプリケーションファイルがルートにある間は"js/…"でいいわけですが、
localhost/app.aspx?user="username"
URL書き換えによってアプリケーションファイルのフォルダが
localhost/user/username.aspx
に偽装されてしまったため、相対指定で対処きなくなったんです。
パラメータが動的に増えて階層が動的に変化する場合もあるわけで
せっかくURLの書き換え規則が正規表現で書けるようになったので
それをフルに使いたいと思ったんです。
ひょっとして"/js"などのルートからの絶対指定ができないのは、
ASP.NET開発サーバだけですか?
IISならできるとか?
0639nobodyさん
2007/05/08(火) 14:51:08ID:???そうか、その絶対パスでみれないからだめなのかorz
すまなかった。お詫びにこんなもの探してきた↓
VirtualPathUtility.MakeRelative("/design/css/main.css", "/images");
0640nobodyさん
2007/05/08(火) 15:00:37ID:???http://msdn2.microsoft.com/ja-jp/library/ms178116(VS.80).aspx
0641nobodyさん
2007/05/08(火) 16:11:39ID:???そうそう。そうなんです。
これからじっくりと試してここに報告に来ますね。
まだ解決できたわけではないけれど、おかげで十分幸せになれました。
ほんとにうれしかったです。ありがとう。
0642nobodyさん
2007/05/08(火) 17:06:46ID:???それもそうだね。
?mode=bitmap&id=1&key=xxxxxみたいな感じでクエリ文字列にデータを含める方法ね。
そういう方法でするなら画像生成部分を別のaspxに分離したほうがスマートだ。
あくまでもwinのGUIに近い感じで開発したい場合、
クラスのフィールド変数を使っては値をやりとりできないため
別の方法で値のやりとりしなければいけない(Session変数など)
という注意点を書きたかっただけだから混乱させてしまったかな。
その方法は、別にSession変数でなくても>>634の方法でもいい。
用途によるけど、履歴に残したくない、表に変数内容を出したくない場合
(キーに顧客の氏名、キャプチャイメージの文字列などが含まれるなど)はやはり
URLのクエリ文字列に含めるのは好ましくない。
なおかつ表示が一時的で良いならSession変数を使うほうが良い。
まぁ複数の画像を生成する必要がある場合?mode=bitmap&img=hoge
みたいにクエリ文字列を追加しないといけないけれど。
それ以外だったら>>634の方法のほうがむしろいいかも。
追伸
Session使った場合も動作の安定性を確保するために?mode=bitmapは最低限必要。
0643nobodyさん
2007/05/08(火) 20:13:20ID:???>あくまでもwinのGUIに近い感じで開発したい場合、
なるほど。asp.netはwebの概念とWindowFormの
概念が混じってるから難しいね。
一番良いのは動的に生成したBitMapを直接、
指定できるカスタムコンポーネントを作ることだねぇ。
0644624
2007/05/08(火) 22:50:44ID:???>>639
すばらしいです。ありがとうございます。
ただ、ashxで試しに折れ線を描画してJpeg画像作成してみたのですが、
折れ線がガタガタな画像が表示されました。
品質を指定すれば改善するのでしょうかね・・・。また明日試してみたいと思います
0646nobodyさん
2007/05/09(水) 14:53:51ID:189NeqEfXMLファイルのパスの取得は出来ないんでしょうか?
wwwroot
└hoge
├a.aspx
└ hoge2
└b.xml←このファイルのパス
DLLではserver.Mappathは使えないですしa.aspxから引数として
ファイルパスを渡すのも仕様上NGで絶対パスをベタ書きするのもNGです
とにかくxmlファイルの内容をa.aspxで参照しているDLLから取得出来れば良いのですが…
0647646
2007/05/09(水) 14:56:50ID:???したい事はxmlファイルの内容をDLLから取得です。
相対パスはその為の手段として思い付いた事っす。
0648nobodyさん
2007/05/09(水) 16:08:06ID:???-----------DLL.cs-------------
string foo = ConfigurationSettings.AppSettings["bar"];
XmlDocument myDoc = new XmlDocument();
myDoc.Load(foo);
-------------web.config--------------
<appSettings>
<add key="bar"
value="~/b.xml" />
</appSettings>
これじゃだめなの?
直接関係ないけど、変数名にhoge使う奴はしね
0649646
2007/05/09(水) 16:48:09ID:???ありがとうございます。
web.configファイルの存在を忘れてました…
試してみます。
ちなみに…GW明けで修正案件4件以上入ってきたのでマジでしねそうです…
0650646
2007/05/09(水) 18:18:52ID:???>xmlDoc.Load(foo);
の部分でファイルパスが絶対パスに変更されwin32\\system\\...のような形に
なってしまいアクセスしたいファイル意外のパスを参照してエラーがででしまいます。
むぅ…DLLのコード内でWebアプリのパスだよと指定する方法があるのでしょうか?
0651nobodyさん
2007/05/09(水) 18:36:40ID:???ありゃ。 じゃあこれはどう!?
-----------DLL.cs-------------
public void trymefunc(HttpApplication app)
{
string foo = app.Request.MapPath("~/b.xml");
XmlDocument myDoc = new XmlDocument();
myDoc.Load(foo);
...
}
-----------default.aspx.cs-------------
protected void Page_Load(object sender, EventArgs e)
{
...
xxx.yyy.trymefunc((HttpApplication)sender);
...
}
なんか駄目かもしれんけどさ。
0653nobodyさん
2007/05/09(水) 18:43:12ID:???うるせーはげ
よし。わかtった。
651をちょっと変更しる。
-----------default.aspx.cs-------------
protected void Page_Load(object sender, EventArgs e)
{
...
xxx.yyy.trymefunc(ApplicationInstance;);
...
}
korede ikeru hazu
0654nobodyさん
2007/05/09(水) 18:47:30ID:???0655646
2007/05/09(水) 18:59:51ID:???そちらも試してみたいと思います。
納期が厳しいので最悪のケースはDLLにグローバル変数pathを追加して
セットアクセサでa.aspx.csからpathに値をsetするような形になりそうというか
この方が楽なんですがこちらを選んだら負けのような希ガス
0657nobodyさん
2007/05/09(水) 21:31:20ID:???つ http://www.abc.fscs.jp/2ch/default.aspx
こんなんでどう?
0658nobodyさん
2007/05/09(水) 21:47:21ID:???0659639
2007/05/09(水) 22:13:34ID:???0660nobodyさん
2007/05/10(木) 00:21:02ID:???使えるよ。
0661646
2007/05/10(木) 03:06:43ID:???本当に感謝です@デスマーチ中
>656
GetFullPathはwin32\system\...だったか求めているパスが返ってこなかったです。
>658,660
DLLからserver.Mappathを使う為のヒントをいただけないでしょうか?
昼間ググったりリファレンスを読んだ限りは見つけられなかったもので…
0663nobodyさん
2007/05/10(木) 11:00:41ID:???自前のSQLサーバーでユーザー管理をすべく
http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000022.aspx
などを参考に設定をしてみました。テーブルは自動的に作成されました。
で、トップページに貼り付けたLoginコントロールではSQLサーバーに
要求が届き、名前とパスワードが正しい場合エラーメッセージは出ません。
がトップページに貼り付けたUserNameコントロールにはユーザー名が出ません。
Login状態が保持されてないみたいです。
この状態でセキュリティ設定されたディレクトリへ移動するとLoginページに
リダイレクトされてしまいます。
で、LoginページのLoginコントロールにユーザー名パスワードを入力すると
「ログインに失敗しました」と表示されますが、このときSQLサーバーには
なんの要求も来ていません。
Loginコントロールはどちらもドラッグして置いただけです。
CreateUserWizerdではユーザーの登録ができます。
何度か削除したり置き直したりしても変わりませんし、トレースしようにも
コードがないのでトレースできません。
あとはどこをチェックすべきでしょうか?
0664663
2007/05/10(木) 11:02:01ID:???<roleManager enabled="true" />
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ConnectionString"
applicationName="ImageTracker"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
passwordFormat="Hashed" />
</providers>
</membership>
0665663
2007/05/10(木) 11:03:03ID:???<authentication mode="Forms">
<forms name="AppNameCookie" slidingExpiration="true" loginUrl="Login.aspx" timeout="1440"
path="/members" cookieless="UseCookies" />
</authentication>
<authorization>
<allow users="?,*" />
<allow roles="members" />
</authorization>
セキュリティ設定されたディレクトリのweb.config
<authorization>
<allow roles="members" />
<deny users="?" />
<deny users="*" />
</authorization>
hogeは使ってないので優しく教えてください。お願いします。
0666nobodyさん
2007/05/10(木) 11:08:17ID:???先にこっちやってごらん。
msdnのサンプルはよくわからんことが多い。
http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review03/asp2review03_01.html
0667nobodyさん
2007/05/10(木) 11:12:58ID:???http://www.atmarkit.co.jp/fdotnet/dotnettips/450aspsecurelogin1/aspsecurelogin1.html
こういう関係の仕組みは使えそうだけど、結局、自分好みや顧客の要求に応えられる
拡張ができなくて自作になることが多いので、深く知る必要はない気がするが勉強にはなるかも。
0668663
2007/05/10(木) 15:52:24ID:???ありがとうございました。@ITの記事は読みやすいですね。
Login.aspxをページごと削除してみたら認証はできるようになったみたいです。
イベントハンドラが壊れてたのでしょうか。
ただ、認証は成功したもののページへのリダイレクト、認証状態の継続はしていない
ようで、相変わらず目的にページに到達できません。
試しにリダイレクトのコードを直接書いてもifは通過するものの
RedirectFromLoginPageは無視されます。
エラーも出ないところを見ると飛び先の保存がされていないみたいです。
別のソリューションを新規作成して環境からチェックしてみるかないみたいです。
Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
If Membership.ValidateUser(Login1.UserName, Login1.Password) Then
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, True)
End If
End Sub
0669nobodyさん
2007/05/10(木) 16:20:28ID:???アンチウィルスとか、なんたらゲートウェイとか、
ブラウザのなんちゃらとかで、クッキーとか自動的に削除したりしてない?
認証状態が継続する仕組みを考えてみればわかる希ガス。
0670663
2007/05/10(木) 16:42:54ID:???0671nobodyさん
2007/05/10(木) 17:07:43ID:???( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__∧∩
_/し' //. V`Д´)/
(_フ彡 / ←>>670
0672663
2007/05/10(木) 18:51:51ID:???>>670
は別人です。まぁ、言っていることはほぼ正しかったと言ってもいいわけですが。
で、結論ですが、トップページで認証するけど認証状態が維持できないのは
<forms name="AppNameCookie" slidingExpiration="true" loginUrl="Login.aspx" timeout="1440"
path="/members" cookieless="UseCookies" />
でパス指定してたからでした。
membersで認証してもページが表示されずloginから抜けられなかったのは
原因が不明ですが、上記 path="/members"を消したとたんに正常に動きはじめました。
パスの設定のあるディレクトリとないディレクトリで認証が継続しないとか、
そんなことのようです。
結局解決に至ったのは>>667で紹介されたとおりに別のソリューションを作って
web.configを編集しながらエラーが出る記述を発見できたおかげです。
ありがとうございました。
0673nobodyさん
2007/05/10(木) 21:57:11ID:???0674663
2007/05/10(木) 22:28:56ID:???パス内というか、ルート直下のmembersディレクトリにセキュリティを掛けたかったんですが、
ところが、このパラメータは、HTTP cookieのパスを指定するパラメータだったようです。
つまりクライアント側のパスなんですね。orz
確か最初はルートを指定していたのですが、直感的にセキュリティを掛けるディレクトリのパスと
勘違いして記述を変更したみたいです。サンプルはルートにセキュリティを掛けていたので。
で、ルートの認証cookieと別になっちゃったのが原因だったみたいです。
理由がわかるともっともな話ですが、なんせ初心者なので・・・お騒がせいたしました。
0675nobodyさん
2007/05/11(金) 01:53:23ID:???0676nobodyさん
2007/05/11(金) 03:10:43ID:???DLLの関数を呼び出したいプロジェクトを開いて
プロジェクトを右クリックして参照の追加でDLLを追加
.csファイルを開いてDLLのクラスのインスタンスを作成して
DLL名.インスタンス名.関数名で呼べるよ
DLL名を省略したかったらusing DLL名;を追加してやる。
0677nobodyさん
2007/05/11(金) 03:17:54ID:???インスタンス化する時に
DLL名.クラス名 nurso = new DLL名.クラス名();
呼び出す時は
nurso.関数名()だわ
0678nobodyさん
2007/05/11(金) 18:50:19ID:???有効期限が設定されてないから、毎回転送するはめになってます。
AJAXの方のScriptResource.axdの方は何もしなくても有効期限が
1年後に設定されてるんですよね。
どなた様かちゃんと有効期限を設定する方法を知りませんか?
0679nobodyさん
2007/05/11(金) 21:10:50ID:???これかな?
Response.Cache.SetExpires (DateTime.Add(DateTime.Now, TimeSpan.FromDays(365));
http://www.microsoft.com/japan/msdn/vs05/aspnet/webresource.aspx
0681nobodyさん
2007/05/13(日) 01:02:53ID:???通常はDLL名とnamespaceが同じだからそうなるわけで、
DLL名違うnamespaceにクラスを作ることもできるかと。
0682nobodyさん
2007/05/13(日) 04:32:08ID:???現在、WinXP/VS2005の環境でWebシステムの構築を行っています。
その際、スプレッドシートにGrapecity社のSPREAD for .NETを利用しています。
自分は担当者ではないので、理由はよくわかりませんが、トライアル版を使用しています。
質問内容はこのSPREADに関することなのです。
フィールドに「削除ボタン」と「入力欄」を持つSPREADシートを使用し、
データベースから取得したデータを表示させ、
入力欄を利用して値の変更を行ったり、削除ボタンを押してレコードを削除するようなページがあります。
問題になっているのが、削除を行ったときの動作でして、
DataSetから指定行を削除し、そのDataSetをsessionに登録し、
onloadのタイミングでSessionから取得したDataSetを表示させているのに、
なぜか入力欄に入力した文字が行削除を行っても上に詰められません。
不思議なことに、削除を行った直後(onloadが走る前・Postbackする前)はちゃんと削除されているにもかかわらず、
onloadが走ると直前の画面がそのまま表示されているのです。
これはSPREADの仕様なのでしょうか。または、ASP.NET側で何か起きているのでしょうか。
コーディング自体にはこのような動作を行う処理は入っていません。
もし分かる方が折られましたら、ご教授願えますでしょうか。
0683nobodyさん
2007/05/13(日) 09:37:27ID:???>これはSPREADの仕様なのでしょうか。
どんな仕様だよっ
0685nobodyさん
2007/05/13(日) 20:22:18ID:???これ嫌なんだけど、仕様的にはどうしようもないのかなぁ。
0686nobodyさん
2007/05/13(日) 20:26:09ID:???○PostBackで
0687nobodyさん
2007/05/13(日) 20:27:20ID:fPqdga/gどのようにすればよいでしょうか?(下記にページイメージ)
ボタン1、ボタン2 <領域を切り替えるためのボタン
−−−−−−|
| 領域 | <ボタンを押したら切り替えるための領域
−−−−−−|
領域にMultiViewを使って、その中にViewを宣言し、
動的にコントロールを追加するようにしてもうまくいきませんでした。
コード例:
protected void Button1_Click(object sender, EventArgs e){
MyUserControl c = new MyUserControl();
View1.Controls.Add(c);
MultiView1.ActiveViewIndex = 0;
}
その他にも領域にPlaceHolderを使用してみたりしてもうまくいきませんでした。
コード例:
protected void Button1_Click(object sender, EventArgs e){
MyUserControl c = new MyUserControl();
PlaceHolder1.Controls.Add(c);
}
このように、領域に対してのみ部分更新をしたいのですが(初期化時にロードしたくない)
サーバコントロールを動的にロードするには何を使用するのが適当なのでしょうか?
0688nobodyさん
2007/05/13(日) 20:39:33ID:???0689687
2007/05/13(日) 21:02:49ID:???最初にページをロードするときに通信量を少なくしたいです。
また、切り替えのバリエーションを途中で増やすことなどを考えています。
0690nobodyさん
2007/05/13(日) 21:10:30ID:???情報量という観点からみると、仮にpanel上にコントロールを配置して、
そのpanelのvisibleをfalseにすると、そのpanel上に配置されたコントロールは
htmlとして描画されない=そのコントロールの通信量はゼロとなるけど、
それでは不十分?
0691nobodyさん
2007/05/13(日) 22:25:46ID:???レスポンスを確認したところ、MultiView/Panelともにご指摘のとおり情報量の観点では問題ないようです。
動的に生成するという観点では
MultiView/Panelなどを使った場合、
ウェブデザイナ上で追加しておかなければ表示できないものなのでしょうか?
タブを動的に追加したいです。
(余談ですが、WindowsプログラミングでよくControlを動的に生成していたので、なぜできないのかが直感的にはわからなかった。)
このような疑問を持った背景は
タブの内部だけちらつきなく、部分的に更新したいと思っていて
タブ内領域を一つのサーバコントロールで作成し、
Ajax.NETか何かでサーバコントロールを切り替える方法でもあるのかなと思って「動的」という発想になっています。
(Ajax.NETとか調べ始めたばかりでよくわかっていないのですが・・)
0692nobodyさん
2007/05/13(日) 23:38:26ID:???レコード削除処理では、削除フラグは用いずDataSetのRemoveを行ってます。
また、DBからの取得も最初に画面が表示されたときのみになっているため、
再度DataBindをしているとは考えにくいです・・。
少し説明ベタなので、伝わりにくいかもしれないですが、実際の処理の流れを簡潔にかいて見ます。
1.画面を表示。SessionがないためDBからデータを取得。DataSetをSessionに登録し、Session情報をSPREADに表示。Ajax利用。
2.入力欄にデータを入力。セルを移動するタイミングでSPREADの情報をSessionに登録。
3.削除ボタンクリック。SPREADの入力欄を一度消去。ここまではJavaScript。
4.SessionからDataSetを取得し、指定行をRemove。指定行を削除したDataSetをSessionに登録。Ajaxで処理。
5.autoPostBackで画面を再表示。SessionがあるためSessionからDataSetを取得、SPREADに表示。
とりあえず原因がわからないため、Onload時に強引にSPREADの情報を書き換えてみることで対処してみる予定です。
0693nobodyさん
2007/05/14(月) 01:09:05ID:???サーバが作成したhtmlをクライアントのブラウザが表示するという形態
であるので、基本的に視覚の状態がいろいろ変化する可能性のある
VisialComponentってのはwebアプリは苦手。
そしてasp.netはpostback以前とpostback後のインスタンスは別々で、
それぞれのaspxの内部のあるオブジェクトはまったく別物であるので、
更新された状態を継続して維持し続けることが難しい。
(↑これをある程度わかりやすく可能にしたのがViewState)
なので、タブを切り替えるというイメージなら、webアプリなら、
それだけでも別ページにしてもいいぐらいな感じだと思う。
そしてこんとロールについては、自分なら、ある程度、固定された
表示パターンしかなければ、Panel等に配置しておいてPanelのvisibleの
オンオフで対応すると思う。
0694nobodyさん
2007/05/14(月) 01:19:32ID:???>5.autoPostBackで画面を再表示。SessionがあるためSessionからDataSetを取得、SPREADに表示。
ポストバック時にセッションに保存したDataSetをSPREADとやらにDataBindしてるんでしょ?
なんで表示時にしかDataBindしかしてないって言い切れてるのかよくわからん。
まぁSPREADとやらが何だかわかんないけど。
0696nobodyさん
2007/05/14(月) 09:10:54ID:e3vnemfrいえ、そのようなメソッドはコールしていないです・・・。
するべきなのですか?
0697nobodyさん
2007/05/14(月) 12:17:44ID:???SaveChangesメソッドをPostBack時にコールすると、期待した動作をしてくれました。
お騒がせしてすいませんでした。
0698nobodyさん
2007/05/14(月) 12:21:04ID:GE+YMe54AjaxControlToolkitを勉強していて、SampleWebSiteを触っているのですが
各AjaxControlToolkitを使っているaspxをみると中で定義されているScriptManagerが
ことごとくコントロールの作成エラーとなってしまいます。
(コンパイルして動かすことはできるのですが・・)
各AjaxControlToolkitのサンプルページ内でエラーを出さずにする方法はどのようにすればよいのでしょうか?
試したこと
各コントロールAnimation.aspxなどを開いてソースを見るとasp:ScriptManagerが解決できてないように見えます。
Web.configを確認したところタグプレフィックスなどの設定は問題がなく、
新しくWebフォームを追加してその中ではasp:ScriptManagerタグを使うことはできました。
(MasterPage内で使うとWeb.configがうまく動かないとか制約でもあるのでしょうか・・)
0699nobodyさん
2007/05/14(月) 15:34:14ID:???GridView内のTemplateFieldにDropDownListを配置したのですが、
ページを読込む際に値を読込んでくれません。
GridViewの外にもDropDownListはあるのですが、それはちゃんと見れます。
出来ればそれと同じ項目をGridView内のDropDownListにも反映させたいのですが、
どうすればいいでしょうか?
0700687
2007/05/14(月) 16:17:07ID:???0701nobodyさん
2007/05/14(月) 16:30:03ID:uOuXEmoBなりますか?
たとえば、
Request["Test"];と参照した場合に"Test"が存在しなかったらRequest["Test"];は
NULLを表すのでしょうか。
0703nobodyさん
2007/05/14(月) 16:39:35ID:uOuXEmoB0704nobodyさん
2007/05/14(月) 16:43:53ID:???0705697
2007/05/14(月) 17:02:35ID:???0706nobodyさん
2007/05/14(月) 17:22:38ID:???あれ?
0707nobodyさん
2007/05/14(月) 21:44:56ID:???確かMasterPageにScriptManagerを配置した場合は、そのMasterPageを使用したaspxでは
ScriptManagerProxyを使わないといけないはず。
0708707
2007/05/14(月) 21:48:07ID:???じゃー関係ないかも。
0709nobodyさん
2007/05/15(火) 01:51:25ID:???だからタブごとに別ページにしなさい。
んで、動的に生成するコントロールはコントロールのvisibleのtrue,falseで対応しなさい。
0711nobodyさん
2007/05/17(木) 02:26:12ID:???その結果を表示したいが、可能かな?クライアントは2000くらいなんだけど
■ このスレッドは過去ログ倉庫に格納されています