【質問】ASP.NETスレ ..
[2ch|▼Menu]
418:nobodyさん
09/05/30 15:27:24
よくわからんけどVBって日付の妥当性チェック無しでConvertしても許されたり
stringにDateTime突っ込んだりしても推測して型変換してくれるの?

419:nobodyさん
09/05/30 15:37:08
普通にブラウザの戻るボタンで戻ると、ちゃんと日付が反映されてるよ
戻るボタンでもAJAX使ってると今日の日付にもどっちゃうけど

ただ単に同じページに戻っただけなら、初めてページを表示させるのと同じだから
表示の日付も今日の日付になってるというのは当たり前の話。
日付を選択して違うページに移動し、再び日付選択ページに戻った時、
その日付を維持したいのなら、セッションかクッキーを使用するか、
GETかPOSTで日付データを渡して値を設定するしかない。

420:410
09/05/30 16:12:33
MasterPage

 表左コラム   | 右コラム
          | 
 カレンダー   | 該当年月日に属する情報
 Calendar.ascx | Result.aspx

こんな感じで、カレンダーで選んだ日付に属する情報を表の右コラムに表示する。

Server.Transferを使うことで、選択した年月日の情報を表示することはできました。
ところがResult.aspxが表示された瞬間、Calendar.ascxのカレンダーが初期年月に戻ってしまう。

カレンダー上に、右コラムで表示された情報の日付が選択された該当月が表示されたままにしておいて
同月の前後その他の情報を続けて表示確認したい。

マスターページに共通の見た目のデザインを設定し、この上で
Webユーザーコントロールから必要な項目を選択し、Webフォームに見たい情報をデータベース検索し表示する。
みたいなことができるような仕組みを作ろうかと思っています。

421:nobodyさん
09/05/30 16:47:09
マスターページとかめんどくさそうだなw

422:nobodyさん
09/05/30 17:07:38 yVbH19hK
>>420
ちょっと危険なコーディングだがMasterPage側での処理ということで。
URLリンク(teke348.dyndns.tv)

カレンダーなんて、そのうち「ある場合ではこうで、そうでない場合はこう」
とか色々制限がつきやすいものだから、それ自体をユーザーコントロールにした方が吉。

423:nobodyさん
09/05/30 20:25:01
>>422
優しいね
ソース眺めて(・∀・)ニヤニヤしようかな(・∀・)ニヤニヤ

424:nobodyさん
09/05/30 20:35:56
(・∀・)ニヤニヤしようと思ったらVBだからよくわからんかったわw

425:nobodyさん
09/05/31 03:44:11
フォーム認証のメリットって何?ベーシック認証じゃ駄目なん?
認証受けずにページを表示しようとしたら指定のページに強制的に飛ばされる、つーのは
便利だと思うけど。

426:nobodyさん
09/05/31 04:17:10
認証方法はユーザIDとパスワードの組み合わせだけだと思うか?

427:nobodyさん
09/05/31 14:48:59
ベーシック認証に他のやり方があるかどうかわからないけど、
Windowsのアカウントユーザを追加してIDとパスを設定しなくちゃいけないから面倒だからじゃない?
apacheとかでも動的に.htaccessとかにユーザを追加管理しなきゃいけなから
面倒だったと記憶してるんだけど。
フォーム認証ならデータベース等を利用して動的にユーザの追加や削除ができるでしょ。



428:nobodyさん
09/05/31 17:35:56
まあ、ASP.NET側で自分で独自に処理してやれば、BASIC認証でも自由にやれる。
けどわざわざやる価値はあんまりないわな。


429:410
09/06/01 17:45:43
>>422
どうもありがとうございます。
MasterPageに複数のWebコントロールを載せて、結果をDefoult.aspxに表示するというコンテンツを作ると、
Sessionを使うと煩雑になるのと、時系列的にPageを切り替えていくのならOKですが、それぞれの
Webコントロール(上のデータ表示)に、同時に反映させるのが難しいかと思いました。

結局、MasterPage画面に配したWebコントロールページに同時にServer.Transferを送ることで
画面上のデータをすべて同期させることができることが解りました。
VIEWSTATEが少し冗長となりましたが。

またアドバイスお願いします。

430:nobodyさん
09/06/02 22:10:04
>>418
int型へのキャストで以下が成立する言語
CInt("+2,7,42,4,6,") = 274246
#全角は入力間違いをしている訳ではない

431:nobodyさん
09/06/02 23:17:26

まぢかw

432:nobodyさん
09/06/04 17:26:18
参考書で練習問題やってたらAdventureWorksってのが出てきたんだけど
自分で設定汁って書いてあるんだけど、なにこれ?

433:nobodyさん
09/06/04 18:33:57
マイクロソフトが配布してるデータベースのサンプル

434:nobodyさん
09/06/10 14:01:06
質問です。1つのイベントを複数のイベントハンドラに対応付ける事は出来るでしょうか?

ネットで探していると
「1つのイベントハンドラを複数のイベントに対応付ける」
というのは沢山出てくるのですが、逆は見つけれません。
そもそも無茶な事しようとしているのでしょうか?

具体的にはボタンがクリックされた時にイベントを2つ呼び出したいといった感じです。

435:nobodyさん
09/06/10 17:51:41
イベントハンドラ内から新しいイベント投げてやればいいんじゃね

436:nobodyさん
09/06/10 18:17:32
>>434
こういうこと?

protected void Page_Load(object sender, EventArgs e)
{
 this.Button1.Click += this.Button2_Click;
 this.Button1.Click += this.Button3_Click;
}

protected void Button2_Click(object sender, EventArgs e)
{
}
protected void Button3_Click(object sender, EventArgs e)
{
}


437:nobodyさん
09/06/10 18:42:20
ヒント:オブザーバー

438:nobodyさん
09/06/10 18:52:20
デザインパターン使って自分で定義せんでも、.Clickに+=すればいいやんw

439:nobodyさん
09/06/10 20:41:28
>>435, >>436,
やっぱそうなりますよね。
javascriptだと、onclick="hoge();piyo();" みたいな書き方が出来た気がするので、
そういう単純な方法無いかな〜と思ったんです^^;

>>437, >>438,
そいうデザパタがあるんですね〜勉強してみたいと思います。

440:1/2
09/06/10 21:06:01
質問です
コードビハインドで組んでいるのですが、コンテナの使い方がいまいちわかりません
csファイル1
public class Jouhou{
 private int suuji;
 private string moji;
 public Jouhou(int suuji,string moji){
  this.〜〜
 }
 public setget〜〜〜  
}

CSファイル2
public class Dousa{
protected System〜〜.Repeater rpt;
 private void Page_Load(〜〜){
  List<Jouhou> joho=new List<Jouhou>();
  joho.add(〜〜); x3とか
  this.rpt.DataSource=joho;
  this.rpt.DataBind();
 }
 
 protected string hoge(string moji){
  return moji;
 }
}

ascxファイル
<asp:Repeater〜ID="rpt"〜〜〜>
 <ItemTemplate>
  <%# DataBinder.Eval(Container.DataItem, "moji") %>←正常にLiteralが作成されて、表示される
  <asp:Literal ID〜〜〜〜 Text="hoge(DataBinder.Eval(Container.DataItem, "moji"))">←エラーが出る(エラーは不明)

441:2/2
09/06/10 21:09:12
つまりRepeaterにはきちんとデータはバインドされていて、mojiとかが正常に以降しているのに、
メソッドに値を送り込もうとすると失敗します。
例えば、
<asp:Literal ID〜〜〜〜 Text="hoge("aaaa")">
とすればきちんとaaaaが返ってきます

やりたいことは、repeaterの中のデータを一旦検証メソッドに送って、その結果を返したいです。
どなたかアドバイス頂けないでしょうか?


442:nobodyさん
09/06/10 23:18:50
>>441
なんかこんなんつくってたわ
昔作ったから意味は忘れた

<asp:TextBox ID="TextBox" Text='<%# this.GetColumnData(Container, "Data") %>' runat="server"></asp:TextBox>

protected string GetColumnData(RepeaterItem repeaterItem, string columnName)
{
 object columnData = DataBinder.Eval(repeaterItem.DataItem, columnName);
 string returnData = "";
 if (columnData is string)
  returnData = (string)columnData;
 else if (columnData is int)
  returnData = ((int)columnData).ToString();
 else if (columnData is decimal)
  returnData = ((decimal)columnData).ToString();
 else if (columnData is DateTime)
  returnData = ((DateTime)columnData).ToString("yyyy/MM/dd");

 return returnData;
}

443:nobodyさん
09/06/10 23:23:30
>>442
ありがとうございます!
さっそくそれを参考にいろいろ調べてみます

444:nobodyさん
09/06/12 09:14:01
すみません。初心者なのですが
皆さんのお知恵をお貸し下さい。

現在、ASP.NETでWEBアプリの勉強をしているのですが
SQLサーバーに、バイナリー形式で保存してある
画像を加工してから出力したくて
BITMAPクラスを使用すればいいことまでは分かったのですが
データベースから取り出した、バイナリーデータを
どうやってBITMAPクラスに入れればいいのか、分からず四苦八苦しています・・・
分かる方からすれば、くだらないかも知れませんが、教えてください。><

Dim image As Bitmap

Dim writeStream As Byte() = New Byte(record.Item(0).toByteArray.Length - 1) {}
System.Buffer.BlockCopy(record.Item(0).toByteArray(), 0, writeStream, 0, record.Item(0).toByteArray.Length)

image = New Bitmap(writeStream)

これだとエラーになっちゃうんです><


445:nobodyさん
09/06/12 17:26:51
>>444
//MSSQLからバイナリデータの取得 varbinary(MAX)
TestDataSetTableAdapters.TestTableTableAdapter tableAdapter =
 new TestWindowsForms2008.TestDataSetTableAdapters.TestTableTableAdapter();
TestDataSet.TestTableDataTable dataTable = new TestDataSet.TestTableDataTable();
tableAdapter.Fill(dataTable);

//MemoryStresmにMSSQLから取得したbyte[]データを格納 行が無かった場合のチェックする必要あり
MemoryStream ms = new MemoryStream(dataTable[0].BitmapData);
//Bitmapのインスタンスを生成
Bitmap bitmap = new Bitmap(ms);

//BitmapのインスタンスをImageプロパティに設定
this.pictureBox1.Image = bitmap;


446:nobodyさん
09/06/12 17:29:16
格納する側

//Bitmapインスタンスの生成とbitmapデータの取得
Bitmap bitmap = new Bitmap("test.bmp");
//BitmapデータをMemoryStreamに読み込む
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);

//Bitmapデータを格納するTableのインスタンスの生成
TestDataSetTableAdapters.TestTableTableAdapter tableAdapter =
 new TestWindowsForms2008.TestDataSetTableAdapters.TestTableTableAdapter();
TestDataSet.TestTableDataTable dataTable = new TestDataSet.TestTableDataTable();
tableAdapter.Fill(dataTable);

//新しい行の作成と、バイナリデータの設定
TestDataSet.TestTableRow row = dataTable.NewTestTableRow();
row.BitmapData = ms.ToArray();
dataTable.Rows.Add(row);

//Tableの更新
tableAdapter.Update(dataTable);

447:nobodyさん
09/06/12 18:11:28
>> 445
ありがとうございます。
無事解決できました。
本当にありがとうございました

448:nobodyさん
09/06/14 03:05:11
ASPのころ、本当にVBSでできることぐらいしかできなくて苦労したけど
ASP.NETになってから、画像も加工できるし、メールも送れるし、FTPも簡単だし、
FileSystemObjectも簡単になってるし、日付計算も簡単になってるしで、
本当に便利になったよね

BASP21すげーーーーーーとかいって使ってたのを思い出したよ

449:nobodyさん
09/06/15 15:22:19
レイアウトの自由度のためだけに、一意なレコードしか選択されなくても
Repeater使ってるんだけどおかしい?
FormViewはHTMLに展開されるときにデフォルトでtableタグが生成されるのが
いただけない。ちなみに.net framework2.0限定。

あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。
<HeaderTemplate>だけだとItemTemplateが無い場合、表示されないし・・

450:nobodyさん
09/06/15 15:36:10
>>449
そこまで文句言うならデザイナにでもパネル突っ込んでガリガリループでHTMLとかコントロール突っ込んでいけば?

451:nobodyさん
09/06/15 19:19:29
>>449
Item5個だけのクラスを新たに作って、リピーターに突っ込めばいいだけなんじゃないの?

452:nobodyさん
09/06/15 21:15:04
そんなの自由自在
ASP.NET サーバコントロールプロジェクトで自作でhtmlを生成して表示してもいいし、
ユーザコントロールにLiteralコントロールを設置して自分でhtml出力すればいい

>あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。
何行表示されても構わないように設計(デザイン)する必要があるわけだから、
極端に言えば何行の表示でも別にいいでしょ
<ItemTemplate>がなければ複数行の動的な生成が難しいんだから一般的には必要ないかと

453:nobodyさん
09/06/15 21:32:48 Ovw0FDNW
Visual Web Developer 2005 Express Edition質問です。
PlaceHolderの中にコントロールをドラッグ&ドロップしたいんですけど、
プレースホルダーを配置して、この上にドラッグドロップしてみたんだけど無理でした。
どうやるの?

454:nobodyさん
09/06/16 02:03:02
たぶんやりたいこととか目的とズレてるような気がするけど、
単にPlaveHolder内にタグを配置したいならデザインビューに切り替えて

<asp:PlaceHolder ID="PlaceHolder2" runat="server">

</asp:PlaceHolder>

の※の部分にコントロールをポトペタすればコントロールが配置できる
でも本来、PlaceHolderは実行時にコントロールを生成するコンテナとしての役割が大きいので、
単に配置するだけとか、配置して一斉に非表示にしたいとか目的なら
Panelとか使ったほうがいいと思う。

455:nobodyさん
09/06/16 20:27:08
>>454
ありがとうございます!!!!!多謝です!

デザインビュー上ではやっぱりできないのですね
自分のはFreeのツールだから禁止させられているのかと思いました。

やりたいことは、タブみたいに、ボタンをおしたら、違う画面になる(でも同じWebフォームで処理したい)
みたいな事です。
なので、パネルでやります。

m(_ _)m

456:nobodyさん
09/06/16 21:10:44
>>455
ある特定の一部分だけ非表示にしたり、表示したりするならPanelでもいいけど、
ごっそり変えるなら、MultiViewとViewを使ったほうがわかりやすい

一つのaspxで、入力フォーム→入力確認ページ→実際に登録みたいなこともできるよ
PostBackが仕様のASP.NETだと、そういうのに2枚のaspxが必要だと思ってる人もいるみたいだけど

457:nobodyさん
09/06/16 21:45:59
>>456
たびたびありがとうございます!!!!!
さっそくMultiViewにします!

458:nobodyさん
09/06/21 11:03:39
本番機と開発機でweb.configが違うんだけど、上手い管理の仕方無いかな。
いつか間違えてしまいそうで怖いんだが。

459:nobodyさん
09/06/21 15:17:48
>同じ名前 (Web.config) の複数の構成ファイルを、ASP.NET の
>Web アプリケーション サーバーの複数のディレクトリに置くことができます。
>各 Web.config ファイル内の構成設定 (IIS 認証の設定など) は、
>それぞれのディレクトリ内のソース ファイルに適用されます。

>Web プロジェクトでは、既定の Web.config ファイルの設定に優先する、
>カスタムの構成ファイル (mysettings.config など) を作成できます。
>チーム開発環境では、カスタムのファイルを作成することが必要になる場合があります。
>カスタム構成ファイルの作成が必要となる状況、
>特に共有プロジェクト開発時の必要性の詳細については、
>「Web 参照、Web プロジェクト、およびソース管理の統合」を参照してください。
>Web プロジェクトの場合、ソース管理に追加する必要がある *.config ファイルは、Web.config だけです。

URLリンク(msdn.microsoft.com)

とか?

460:nobodyさん
09/06/21 15:19:15
あとは、やったことないけど、
FTPとかでの更新ならweb.configだけ異なる権限にしておいて、
勝手に書き換えられないようにしておくとか、そんなんはできないのかな

461:nobodyさん
09/06/21 15:35:33
>>458
ウチの場合は、web.config.dev とか、web.config.release 等の名前で
複数の web.config を用意している。自動デプロイスクリプトを組んでる
ので、その中でデプロイ先の環境を判別して web.config にコピってる。
まあ、普通だな。手作業はとにかく排除するのが基本じゃね。

462:458
09/06/21 23:22:51
レスありがとう。
>>460
これはちょっと楽そうだ
読み取り専用属性つけて試してみる。

>>461
だね。ちょっと手を抜いて手作業でしてたけど、後々を考えると
しっかりやった方がいいよね。
XCOPYでゴソってやって、最後にweb.configだけ上書きって
流れだけか。
思考停止してたけど、なんも考える事無かったな。

ありがとう。

463:nobodyさん
09/06/24 19:17:16
俺は毎回コピーした後にweb.config手作業で書き換えてる
たまに書き換え忘れることもあるがw

web.configに設定する内容を、本番と開発で、全く同じにするか、
間違えると動かない設定にしてるので、書き換えないと本番が動かないようにしてる
一番困るのは、書き換え忘れで本番が変な設定で動くことだからな

464:nobodyさん
09/06/24 21:51:34
開発環境と本番環境でweb.configが違うってのは、どういう場合とか?
そういうときはディレクトリ分けして、ディレクトリごとにweb.configを統一しといたほうがいいと思うんだけど

465:nobodyさん
09/06/24 22:53:08
>>464
appSettings とか connectionStrings は結構違うでしょ。あとは認証、
ログ設定、例外発生時の挙動なんかも変えたくなると思うけど。

466:nobodyさん
09/06/24 23:04:24
>>464は何か意図を勘違いしてると思うのだよ


467:nobodyさん
09/06/24 23:58:39
>>465
それってディレクトリごとにかえられになかったっけ?

468:nobodyさん
09/06/25 01:32:47
ディレクトリ毎にweb.configは設定できるはず(やったことない)だけど、
問題はその中身を書き換えなきゃいけない、ってことだと思うんだが。
>>465が書いてる通りのものは結構書き換えなきゃいけない
と思うんだけど。

469:nobodyさん
09/06/25 17:13:04
UpdatePanel の中にラベルとボタンがあります。

ボタンが押されたら、とある PDFファイル をクライアントに attachment として投げつけて
ラベルの文字を「投げたお」と書き換えたいです。(UpdatePanelの更新)

ですが、UpdatePanel の中では PDF をクライアントに投げつける、ということが出来ないみたいです。
何か良い策はないでしょうか。

インテルのWebサイトとかでは、ファイルの投げ付け&画面遷移を同時にやってるやつがありますが
どんな仕組みなんでしょう・・・(そこにヒントがある気がしてます)

470:nobodyさん
09/06/25 17:55:06
ボタンクリックで新規ブラウザを立ち上げてPDFをダウンロードさせ、
UpdatePanelで表示してあげればいいんでね?


471:nobodyさん
09/06/25 18:00:53
>>468
これとか?

URLリンク(social.msdn.microsoft.com)

472:nobodyさん
09/06/25 21:32:10
>>471
し、しらんかった・・・
これは便利そうだ。設定変えたいとこだけ全部外だし
出来そうだなー。
結論としては「ディレクトリ毎」っていうのが、実は
「configファイルを分割」っていう意味だったってこと?
だから「web.config書き換えるっていつだよ?」みたいな
話になってたって事?

まぁどっちでもいいが、良いこと知った。トンクス。

473:nobodyさん
09/06/26 00:25:17
configSourceはweb.configと同じく更新が即反映されるので
大抵のもんはappSettingに突っ込んで分離してる

474:nobodyさん
09/06/26 05:38:12
そして今度は外だししたファイルを上書きするわけですね


475:nobodyさん
09/06/26 11:36:26
>>474
これは?

location 要素は、ASP.NET 構成 API を使用することによりプログラムから設定できます。また、ASP.NET MMC スナップインの [場所] タブを使用して設定することもできます。
URLリンク(msdn.microsoft.com)

476:nobodyさん
09/06/26 17:43:41
>>465
それはweb.configの指定を特定のパスに限る設定だろ

今問題になってるのは
環境を設定するファイルがあって、本番のそのファイルを開発環境のファイルで上書きすること

で、>>471の方法では、結局上書きする(=書き換える必要がでる)ファイルが
web.configからconnection.config(とか任意のファイル)に変わるだけで
結局上書きしないようにするとか手作業で書き換えるとかする必要がでるんじゃないか、ってのが>>474の主張

web.configから任意のファイルになるだけ判りにくくて混乱の元になる気がするぜ


477:nobodyさん
09/06/26 19:00:22
>>476
location要素をプログラムから設定できるんなら
環境(サーバ名とか)によって任意のファイルを指定できるんでないのかなと思って。

478:nobodyさん
09/06/29 19:17:18
お世話になります、自分で独自に作ったクラスをwebサービスの戻り値にするにはどのようにしたらよろしいでしょうか?
イメージとしては

class 個人情報(){
 private string 氏名;
 private int 年齢;
 setget〜〜〜
}
//個人情報クラスのリストを戻す
[webmethod]
class 個人情報[] 個人情報リスト(){
 List<個人情報> aaa=new List<個人情報>();
 aaa.add(new 個人情報(名無し,10));
 aaa.add〜〜〜;
 return aaa;
}

このような感じで作ってもエラーが出てうまく行きません、独自クラスではなくintやstringといったものなら正常に返せます
よろしくお願いします。 

479:nobodyさん
09/06/29 19:43:32 uOZzkvvT
以下について教えて下さい。
[やりたい事]
1)登録ボタン押下
2)DB検索
3)フォームの入力データとDB結果をチェック
4)重複データでない場合=「新規登録しますか?」ダイアログ表示
>OK=DB追加
>キャンセル=中止

重複データの場合=「重複してますが登録しますか?」ダイアログ表示
 >OK=DB追加
 >キャンセル=中止

このような処理を実施させるには、どのような制御を実装すれば良いのでしょうか?

[聞きたい事]
・表示するメッセージを上記のように変動させて確認ダイアログを表示したい
・OK/キャンセルの戻り値を取りたい

登録ボタンのOnClientClickに「return confirm("登録しますか?");」を設定すれば
動作すると思ったのですが、上記1)の後に「登録しますか」ダイアログが出てしまい想定する動作になりませんでした。

不躾で申し訳ありませんが、ご教授の程よろしくお願い致します。

[環境]
Microsoft Visual Studio 2008 Version 9.0.30729.1 SP
Microsoft .NET Framework Version 3.5 SP1
Microsoft Visual Web Developer 2008
VBScript

480:nobodyさん
09/06/29 20:51:34 JEwwWVNF
すでにあるxlsファイルを更新したいんですが、どうすればいいのでしょうか?
A*1に1を入れて保存とかそんな感じでお願いします

481:nobodyさん
09/06/29 22:31:40
>>480
すでにあるがサーバ上にあるのか、クライアント側にあるのかわからないけど、
サーバ側なら
URLリンク(www.atmarkit.co.jp)
で操作できるんでないかね。
Microsoft Excel 11.0 Object Libraryって奴で。

クライアント上にあるのならサーバにアップロードするなりしないといけないと思う

482:nobodyさん
09/06/29 23:18:11
>>479
JavaScriptでやりたいということだと、かなり特殊なことをしなくちゃいけないので面倒臭い。
なので、可能なら同じページに戻して、新規登録だけど登録していい?とか、重複してるけど登録していい?
というメッセージを表示させて確認を求めるほうが楽。

AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
非AJAXでやるとしたらこんな感じかな。
他に簡単な方法のアイデアがあったら求む・・・

<form id="form1" runat="server">
 <asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
 <asp:HiddenField ID="HiddenField2" runat="server" Value="0" />
 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
 <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
</form>



483:nobodyさん
09/06/29 23:18:11
>>479
OnClientClickだとポストバック前に実行しちゃうよ

URLリンク(proshile.blog.drecom.jp)
でいけるけど、今ってもっと良い方法がないのかな?
普段1.1使っててわからん。




484:nobodyさん
09/06/29 23:19:02
>>479
つづき

protected void Button2_Click(object sender, EventArgs e)
{
 //ユーザによるボタンのクリック DB内を調査して表示する→2回目のボタンを押す
 if (this.HiddenField1.Value == "0")
 {
  //Value = 1でユーザによるclick Value = 2でJavaScriptによるクリック
  this.HiddenField1.Value = "1";
  //データベース内のデータを確認する作業をここでする
  //もしyesが押されたらHiddenField2にtrueを、noならfalseを格納する
  ScriptManager.RegisterStartupScript(this, typeof(Page), "test", "if (confirm('')) { form1.HiddenField2.value = 'true'; } else {form1.HiddenField2.value = 'false';};form1.Button2.click();", true);
 }
 //JavaScriptによる2回目のクリック confirmの結果により動作を分ける
 else if (this.HiddenField1.Value == "1")
 {
  //もしyesを押された時の処理
  if (this.HiddenField2.Value == "true")
  {
   //confirmでyesをclick時に行う動作
  }
  //Value = 1でユーザによるclick Value = 2でJavaScriptによるクリック
  this.HiddenField1.Value = "0";
 }
}

485:nobodyさん
09/06/29 23:19:21 fVwdImLx
全てのページに、URLにuserid=XXXX
といった文字列を追加したいのですが
アプリの本数が多くて、簡単に追加できる方法ないですかね?

486:nobodyさん
09/06/29 23:30:27
>>485
すべてのページでgetを受け取れるようにしたいのか、
すべてのページのハイパーリンクにgetのクエリを付与したいのか
詳しく書いてくれないと何とも言えない。

でもuseridが変更されるとこまると思うから常識的にはsessionを使うべきだと思う

487:nobodyさん
09/06/29 23:35:02
>>486
説明不足でした。getのクエリ文字列に追加したいのです。

sessionを使うのが普通なのは承知していますが
環境の都合上使用ができないのです。(クライアントのCOOKIEも)


488:nobodyさん
09/06/29 23:42:59 fVwdImLx
また、言葉足らず・・・
sessionを使用ができないのではなく、
sessionだけではなく、GETのクエリ文字列にもパラメータが必要ということでした。

489:nobodyさん
09/06/29 23:49:37
>>488
response.redirectでやると思うが、?userid=xxxxって追加する専用メソッドを入れたらいいんじゃない?

追加メソッド(string url){
 return url+="?userid="+this.userid;
}

みたいな感じで、useridがどこにあるのか知らないけど

どなたか>>478もお願いしますm(_ _)m

490:nobodyさん
09/06/30 00:00:00
>>489
やはり、その方法しかないですかね?
useridはIIS上で保持しています。

URLに付加された状態でProxyを通過させたいんですよね・・・
(言葉足らずで情報が小出しになってしまい申し訳ないです)

491:nobodyさん
09/06/30 00:31:17
プロクシを通過させると何か問題なの?


俺ならSystem.Web.UI.Pageを継承するクラスUserPageを作成して、
private int UserIDみたいなメンバ変数と
public void Redirect(string url,)みたいなメソッドをを作成して
urlとUserIDからRedirectさせるようにする

んで、そのクラスを継承するページを設定するかな?
public partial class Default : UserPage
みたいな感じで
そうすれば各ページでuseridを取得するルーチンを書かなくて済むし、
現状のresponse.redirectをUserPage.Regirect(string url)に置換するだけで済むし

492:nobodyさん
09/06/30 01:25:00
>>478

public class Person
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}

private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}

[WebMethod]
public List<Person> GetPersonList()
{
List<Person> aaa = new List<Person>();
aaa.Add(new Person { Name = "Taro", Age=8 });
aaa.Add(new Person { Name = "Jiro", Age = 7 });
return aaa;
}

でとりあえず動いてるみたいなんだが、どんなエラーなんだ?

493:nobodyさん
09/06/30 01:26:01
半角スペース消えるの忘れてた・・orzスマソ

494:479
09/06/30 09:14:08
>>482,484
ご教授ありがとうございます。おおよその動きは理解出来ました。

>AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
AJAXは使っています。
その場合、提示された処理より簡単に実装出来るのでしょうか?
出来ればこちらのやり方も教授頂けると嬉しいです。

>>483
ご教授ありがとうございました。 

495:478
09/06/30 10:15:56
>>492
ありがとうございます、新しいページで作り直したら動きましたorz

496:nobodyさん
09/06/30 16:05:45
>>494
AJAXなら、フォームからフォーカスが外れるたびに入力内容をチェックしにいって、
重複か重複でないかをチェックして、ScriptManager.RegisterStartupScriptで
JavaScriptで定義した変数にbool値を格納する
例 var isDuplicate = true;

登録ボタン押下時に、JavaScriptでisDuplicateの変数内容によって、
onSubmitで表示するconfirmの表示文字を変更させればいい。
cancel時にPostの処理を中止するのはどちらも同じだから。

497:479
09/06/30 17:26:30
>>496
ご丁寧にありがとうございます。
482,484を実装し、期待する動作は確認出来ました。
作成しデバッグしている最中にASPの制御、と言うかスタンドアロン(VB)との違いが良く分かりました。
(それにより)496の内容もすぐに理解出来ました。応用させて頂きます。
ご教授頂いた事に感謝致します。
本当にありがとうございました。

498:nobodyさん
09/07/01 17:57:52
MSの開発技術大全のASP.NET編で、SQLDataAdapterコントロールが
デザイナにD&Dできるみたいな記述になってるけど、VS2005や2008でも出来たっけ?

499: [―{}@{}@{}-] nobodyさん
09/07/01 18:29:24
>>498
SqlDataSourceとかObjectDataSourceコントロールの事じゃないか

500:nobodyさん
09/07/02 20:39:30 ZUKdZhY7
ASPでjavascriptを使わずにあるボタンを押したら、とあるテキストボックスに1を入力するっていう処理をやりたいのですが、
今まではポストバックさせてやっていたのですが、そうするといちいち画面が切り替わるのがうっとうしいので画面が切り替わらないで処理をやりたいです。
可能でしょうか?

501:nobodyさん
09/07/02 20:54:55
不可

502:nobodyさん
09/07/02 21:15:02 ZUKdZhY7
>>501
ありがとうございます
そうですか、あきらめてjavascript使うしかないですね



503:nobodyさん
09/07/02 21:46:24
1って入力してもらう

504:nobodyさん
09/07/02 21:51:06 ZUKdZhY7
目的は1を入力した状態にしたいのではなくて、テキストボックスをreadonlyにしたいのです。

javascriptで実装するにはどういうコードを書けばいいのでしょうか?

505:nobodyさん
09/07/02 21:57:01

マジレスすると、TextBox.Textに1を入れた後にTextBox.ReadOnlyにtrueを設定

506:nobodyさん
09/07/02 21:59:45 ZUKdZhY7
ポストバックさせたくないんですよ

507:nobodyさん
09/07/02 23:41:47
AJAX使いなよ
ポストバックしてるけどしていないような感じで実現できるから

508:nobodyさん
09/07/02 23:48:58 ZUKdZhY7
一番簡単に実装するには何がいいでしょうか?
当方VB、Cの経験しかありません

509:nobodyさん
09/07/02 23:56:35
そろそろスルーで

510:nobodyさん
09/07/03 00:01:26
WebアプリなのにJavaScriptもポストバックもだめとかそもそもが間違ってるよな。
スタンドアロンアプリでも作ってろよ

511:nobodyさん
09/07/03 00:11:41 WYeGS7LZ
しょうがないじゃん、最近はじめたんだから。
radiobutton_checkedイベントやdropdownlist_chengedindexイベントでいちいち画面がロードされるのうざいでしょ?


512:nobodyさん
09/07/03 00:30:44
>>499
いや、SqlDataAdapterだ。俺の目が腐ってなければ・・

ちなみにいまVS2008で試したがグレーアウトでデザイナにはドロップできない。
VS2005ではできるか試してもらえる人はいるだろうか。

グレーアウトになってるってことは使うなってことだよなぁ
手打ちでコーディングはできるんだから。

513:nobodyさん
09/07/03 01:20:01
silverlight使えよ。

514:nobodyさん
09/07/03 01:41:25
>>511
>しょうがないじゃん、最近はじめたんだから。
ブラウザは散々使っているんだろうから、その経験則から何が実現可能か不可能か判断できずに、
最近始めたばかりだと開き直るようじゃあ、あなたにWebアプリは向いてないよ。

↓お好きなのドゾ
Silverlight Flash Ajax ActiveX JavaApplet

>>512
標準ではツールボックスにSqlDataAdapterの表示がないんだが、
どれを参照すれば表示されるん?

515:nobodyさん
09/07/03 01:52:55
>>514
コントロールツールボックスを→クリで「全て表示」とかなかったっけか

516:nobodyさん
09/07/03 13:20:41
>>512
2005は手元に無いからわからんが、2003なら出来るな
データアダプタ構成ウィザードが立ち上がってきた

517:500
09/07/04 00:48:45 gSOLs+sG
いろいろ調べた結果ユーザーコントロールを使用することにより実装することができました
ここって結構無知が多いんだな

518:nobodyさん
09/07/04 01:41:16
PostbackもJavaSciptも使用せずに動的に変更なんてできませんよw

519:nobodyさん
09/07/04 01:43:34
だなぁ、多分ASP.NET自体を新しい概念で開発したんだろうなw
その場合.NETって名前そのものが変わると思うけどw

520:518
09/07/04 01:50:28
>>519
無知で結構だから、もし実現できるのなら教えてほしいよ

何を勘違いしたんだろうな。
ユーザコントロールつかってもポストバックはするし。
ユーザコントロールはJavaScriptの実装には不向きだから、
AJAXでも実装したんかな?

521:nobodyさん
09/07/04 02:05:56
ICallBackEventHandlerで勘違いしたに20000000000ジンバブエドル

522:nobodyさん
09/07/04 02:19:19
JavaScriptおもいっきしつかっとるやんw
つか、それならAJAX使ったほうが楽でしょ

523:nobodyさん
09/07/04 04:29:22
要は画面が切り替わったのに気付かなければいいんだろ?
つ Page.SmartNavigation

ASPとASP.NETは別物だからちゃんと区別して書こうな
ホントにASP.NETじゃないASPの話だったらスレ違いだがなw


524:nobodyさん
09/07/04 09:47:11
>>517
UpdatePanelで勘違いしたに30000ペリカ

525:nobodyさん
09/07/04 16:47:14
>>523
聞いたことがないと思ったら2.0以降でDeprecatedか

526:nobodyさん
09/07/04 17:25:28
ここ最近みてると、

ASP.NET→JavaScriptの関数の実行(引数引き渡しも含む)
JavaScript→ASP.NETのメソッドの実行(引数引き渡しも含む)

という需要が多そうだな

527:nobodyさん
09/07/05 11:58:29 Km3uJP2Y
HTMLデザイナの表示をカスタマイズで
カラムの幅を狭めると、

デー
タバ
イン
 ド

みたいになって縦長になってウザイっす。。
なんで「データバインド」なんて意味のない文字列を表示させるのかな。
これを消したいです。なんか方法ありませんか????

528:nobodyさん
09/07/05 14:08:13
データバインドであることがわかるし、
縦長になるとデザイン上の狂いのあることが発見できることもある
ウザイときもあるが表示のおかげでデザインの狂いを修正できたことが何度かあるよ

従って一長一短

529:nobodyさん
09/07/05 14:18:45
んなのMSに聞けばいいだろ?
ここはお前のVSサポートセンターじゃねえ

530:nobodyさん
09/07/05 14:22:06
このスレの存在意義なくすなよカス

531:nobodyさん
09/07/05 14:33:29
2chで煽るのが僕のレーゾンデートルですw

532:nobodyさん
09/07/05 15:11:29
>>528
なるほど。そういう物だと理解します。

533:nobodyさん
09/07/05 15:32:32 Km3uJP2Y
GridViewのHyperLinkFieldに対して、2個のSQLのカラムを使って、DataTextFormatStringを作りたいです。

以下のSQLで抽出した2個のカラムを結合した文字列をハイパーリンクに表示させたいです。
select fig_name, fig_number from figure

これで抽出できるのはおのおの、
・fig_name:
'図'と'表'のいずれか
・fig_number:
図表番号。数字。

とします。

そしてハイパーリンクにはこの2個をくっつけて

“図1”とか、“表2”とかにしたいです。

とりあえず、以下のようにやったけどだめでした。。
DataTextField="fig_name,fig_number"
DataTextFormatString="{0}{1}"

どなたか、ヒントでも結構ですのでよろしくお願いします。。

534:nobodyさん
09/07/05 17:32:49
>>533
簡単に思いつくのは、TemplateFieldで自前で追加

535:nobodyさん
09/07/05 17:55:40
SQLのクエリで自前で合成したフィールドを作ればいいんでないの
SELECT (Table.fig_name + Table._number) AS fig_fullname FROM Table
とか。

でもこれだとSQLDataSourceが使えなかったり、
GridViewの編集や削除が使えない可能性があるから嫌われそうだけど。
>>534のTemplaterFieldにしても編集とかできなさげ。

んで、結局、編集、削除、追加は自前で実装して、
どうせ実装するならRepeaterでいいじゃんということに落ち着く流れになりそう。

536:nobodyさん
09/07/05 21:51:56
>>534,535さん
ありがとうございます。
RowCreateでデータベースから抽出された結果にアクセスできたので、
そこで文字列をつくって、ハイパーリンクに貼り付けました。
やりかたはダサイかもしれませんが、まぁまだ素人なので。。

537:nobodyさん
09/07/06 00:03:42
ユーザーコントロールのIDを取得したいのですが、どうすればいいのでしょうか?

538:nobodyさん
09/07/06 00:41:21
ClientID

539:nobodyさん
09/07/06 01:25:51 bdwzJZ3p
UpdatePanel凄すぎワロタ。やっぱMSはすげーなぁ。

540:nobodyさん
09/07/06 06:49:00
>>524
おめでとう どうやら君が真のエスパーだったようだ

541:nobodyさん
09/07/06 10:36:39
開発技術大全って.net 3.5以降とかのは出版されてる?

>>516とかみるとかなり古そうだが。。

542:nobodyさん
09/07/06 12:44:03
開発技術大全は記述されてるフレームワーク関連は古いが、
それ以前のASP.NETのアーキテクチャに関する仕組みを知りたいということなら
そんなに色あせないで見ることが出来る。

データベース関連ならADO.NETとLink To Entitiesの本を買うべきだし、
コントロールの使い方ならもっと別の本を買うべき。
それに、どうせいろいろやりたくなると、
DataSet+Repeaterコントロールに落ち着くことになるからね

543:nobodyさん
09/07/06 18:51:33 /VP1pSJi
テキストボックスのIDをascxからaspxに持ってきたいんだけど、string型になっちゃうのは仕様なんですが?
textbox型で持ってくることは出来ないのでしょうか?
ctypeで変換しようとするとstring型はtextbox型へ変換できませんってでます

544:nobodyさん
09/07/06 19:01:42
無知な俺らに聞いても無駄だと思うが
ユーザコントロールを作るということは、新しいクラスを設計するということ。
ユーザコントロールにサーバコントロールを配置するということは、
そのクラスのメンバ変数にサーバコントロール型のオブジェクトを
privateのスコープで持つということと同じなので、
ユーザコントロール側で、そのテキストボックスのインスタンスを公開するプロパティを宣言すればいい。
そうすれば、ユーザコントロールに配置したテキストボックスのIDは知る必要がない。

でもそれだと隠蔽の意味がなくなってしまうので、
外からでも変更可能なプロパティだけを
ユーザコントロールのプロパティとして再定義して公開するのが普通のやり方。

545:nobodyさん
09/07/06 19:11:22 /VP1pSJi
>>544
つまりどういうことですか?
コードで書いて教えてください
・user.ascx
protected sub name () as textbox
get
return txtname.clientID
end get
end sub

・main.aspx
dim TextName as textbox = name
TextBox.text="Test"

今はこんな感じで書いていてだめになっています

546:nobodyさん
09/07/06 19:32:14
無知だからVBはわからないがC#だと
public string Text
{
 get { this.TextBox.Text = value; }
}

547:nobodyさん
09/07/06 19:35:52
ああget→setかな
すまん無知で

548:nobodyさん
09/07/06 19:37:50
Protected ReadOnly Property name() as TextBox

Get
Return txtname
End Get

End Property

でいいんちゃうか。


549:nobodyさん
09/07/06 19:41:53 /VP1pSJi
>>548
txtnameだけでIDを送ることができるんですね。
ありがとうございました。

550:nobodyさん
09/07/06 19:43:38
>>548
少なくともユーザコントロールで、所有してるオブジェクトをそのままプロパティで公開するのは止めたほうがいいよ

551:nobodyさん
09/07/06 19:57:47
それは分かってるがID:/VP1pSJiが何をしたいか分からんことには。。

552:nobodyさん
09/07/06 20:16:06 /VP1pSJi
すいません>>545がちょっとまちがっていました
・user.ascx
protected sub name () as textbox
get
return txtname.clientID
end get
end sub

・main.aspx
dim TextName as textbox = name
TextName.text="Test"

つまりユーザーコントロールにあるコントロールをaspx側で操作したいというこです

553:nobodyさん
09/07/06 20:19:06
だからコントロールのプロパティをUserControlのプロパティとして公開しなさいっての

554:nobodyさん
09/07/06 20:21:29 /VP1pSJi
>>553
どうやるんですか?

555:nobodyさん
09/07/06 20:57:29
>>554
>>546-547

556:nobodyさん
09/07/06 22:05:11 Igs6oFx6
質問させてぇ〜

「無効なポストバックまたはコールバック引数です。
イベントの検証は、構成の <pages enableEventValidation="true"/>、
またはページの <%@ Page EnableEventValidation="true" %> を使用して・・・」

っていう糞長いエラーが。。

状況はMultiViewの中のViewのなかのGridViewのなかに配置したTemplateField(イメージボタン)
に、
CommandName="delete"
OnClientClick="return confirm('削除してよろしいですか?');"

ってプロパティ設定をして、ゴミ箱のイメージボタンをおしたら削除されるようにしたわけ。

で、さらにこのGridViewのイベントハンドラを以下のようにしてるわけ。
OnRowCommand = "GridViewMeans_RowCommand"

で、このイメージボタンを雄と件のエラーが発生します。。。

そもそもこのエラーって何を意味するの?
「ぽすとばっくやコールバックのイベントが、それをレンダリングしたサーバコントロールから由来するとだめ」
しかもセキュリティの理由から??
意味が分からない。
意味が分からないから対処方法も想像できない。単にenableEventValidation="false"にすればいいよ、とか
意味も分からず闇雲にトライエラーしたくないし。
だれか、ずばっと、こういうパラダイムがあるから、それを解決するためにこういうセキュリティ上の配慮が必要で、そのために
チェックしてるんだ!!!とか男らしい回答求む。

557:nobodyさん
09/07/06 22:24:58
>>556
URLリンク(techbank.jp)

558:nobodyさん
09/07/06 22:53:47
>>557
ご回答ありがとうございます。
するってぇと、何でImageButtonをViewStateに保存しちゃまずいんですかね?
そういうモノだから??

559:nobodyさん
09/07/06 22:56:34
とりあえず試してみました。
変わりませんでした。。
やはりあの、、原理を。。

560:nobodyさん
09/07/06 23:10:21
例えばRepeaterやGridViewコントロールなどのように、
動的に行が生成されるコントロールで、
さらに動的にRepeaterやGridViewなどのような動的に行を生成するコントロールを作成し、
その中でClickイベントを実装すると、その問題が発生するということだったはず。

ページによって存在するかどうかわからないイベントの発生元が存在した場合に、
それを検証する術がないのでエラーになるという感じだったような気がする。
例えばRepeaterの中のLiteralコントロールに、サニタイズをせずに文字列を表示させてしまい、
擬似的にポストバックされるコードを記述されてしまうのを検知するのと区別が付かないとかなんとか。

記事のありかは忘れた。

561:nobodyさん
09/07/06 23:23:44
>>560
おお〜。なるほど!ありがとうございます
分かりません!

でも自分の頭じゃ理解できないってことだけは分かりました。

まぁMFCなんかでもダイアログボックスを表示中に他のタイマーとかのイベントがくると
ダイアログボックスのなかのメッセージポンプがそれを処理しちゃって、
その辺を考えて作らないといけないとか、そんな苦労を思い出します。
要は凝ったフレームワークにありがちな落とし穴って事ですかね。

うーん。困ったw

562:nobodyさん
09/07/06 23:35:38
>>554
・main.aspx
dim TextName as textbox = CType(ユーザコントロールのID.FindControl("txtName"), TextBox)

これでお前のやりたいことはたぶんできるだろう

これをやるべきじゃないとか何とかいろいろあるんだが、
まあそれは勉強してくれと言うしかない

563:561
09/07/07 00:48:14
いろいろ試行錯誤した結果、TemplateFieldのItemTemplateの中身がLinkButtonだと削除機能は全く問題ないけど、
ImageButtonだとだめみたいです。
ImageButtonにしてEnableViewStateをFALSEにしてもだめみたいです。
なんか、ImageButtonがだめのかねぇ。
もう寝ます。

564:561
09/07/07 21:59:56
海外のサイトあさって回答を見つけたよ。
なんでもGridViewのサーバーサイドのイベントが2回以上起こると発生するらしい。
自分の場合は最初に(書いてなかったけど)RowCreateイベントを使ってる。
そして2回目はボタンをクリックしたときに発生する。
この2回のポストバックにおいて、RowがもってるID(つまりe.Row.ID)が食い違っていると
この検証に引っかかるらしい。
(ただのMSのバグじゃねーの??)
自分の場合、最初はRowCreateで、この時点ではe.Row.IDはNULL、たぶんボタンをクリックしたときはなんか値が入ってるんだろうね。
それが食い違っているからだめ〜ってこと。
なんで最初にユニークな値を突っ込んでおけばいいらしい。
つまり
RowCreate()
{
e.Row.ID=Guid.NewGuid().ToString();
}

これでOKだった。でもなぜLinkボタンならよいのかは不明。Linkボタンはポストバックじゃないからかな。

565:nobodyさん
09/07/07 22:06:15
1ページに対してイベントは1回だから別に間違ってないだろ
それこそ、故意にイベントを発生するタグを挿入される危険性を排除するのが目的なんだから

566:nobodyさん
09/07/07 22:10:13
なんだ、兄さんよく知ってる感じだな。
もっと早く出てきて教えてくれよ。

567:nobodyさん
09/07/07 22:27:17
IDが変わるような操作したあと、databindし直すのが正しい操作じゃないのか?


568:nobodyさん
09/07/07 22:58:50
>>567
たぶんあなたの言っていることは正しい。

569:nobodyさん
09/07/07 23:52:10
javascriptどうすれば簡単に覚えられますか?
VBに浸りすぎてぜんぜんわからん

570:nobodyさん
09/07/07 23:57:57 ID58Jon/
.NETではなくASPなのですが、スレがないのでこちらに書き込みます。
DBテーブル上にBASE64エンコードされた画像データ(テキスト)が格納されています。
これをデコードしてresponseで出力したいのですが。。

エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
ちなみにBASP21でデコードすると

Dim o_buf
o_buf = objBASP.BASE64(rsRecord.Fields("Field_name").value, 1)
Response.BinaryWrite o_buf
Response.End

のような感じになりますが、o_bufにバイナリイメージの先頭数byteしか入ってこなかったので、
BASP21は使えないと考えています。
「これぞ王道」のような方法があればお教えください。
いまさらながらASPでプログラムを作成する案件がでてきて、慣れない中苦戦しているもので。。
よろしくお願いします。



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

4137日前に更新/262 KB
担当:undef