C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: DetailsViewでの編集制御


(過去ログ 79 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■46459 / inTopicNo.1)  DetailsViewでの編集制御
  
□投稿者/ ゆらり (1回)-(2010/02/03(Wed) 11:18:47)

分類:[ASP.NET (VB)] 

DetailsViewでテーブルの更新を行っています。
条件によって編集の可否を制御したいためのです。Template列のTextBoxをFindControlで取得してプロパティを変更しているのですが、クライアント側(ブラウザで表示時)では変更が反映されません。

Dim textBox = DirectCast(DetailsView1.FindControl("Code"), TextBox)
textBox.BackColor = Drawing.Color.Silver
textBox.ReadOnly = True

DefaultMode = DetailsViewMode.ReadOnlyにしても正常に動作しいないようで、編集が行えてしまいます。同じ原因に起因すると思うのですが、その原因が分かりません。

アドバイスいただけませんでしょうか?
引用返信 編集キー/
■46467 / inTopicNo.2)  Re[1]: DetailsViewでの編集制御
□投稿者/ ゆらり (2回)-(2010/02/03(Wed) 13:02:03)
原因を切り分けるためにシンプルなWebPageを作成してみたところMasterPageと関係があるようです。

MasterPage内にDetailsViewを配置すると正常に動作しません。MasterPageを使用しないと正常に動作します。
引用返信 編集キー/
■46482 / inTopicNo.3)  Re[2]: DetailsViewでの編集制御
□投稿者/ もりお (177回)-(2010/02/03(Wed) 16:47:39)
No46467 (ゆらり さん) に返信

> MasterPageを使用しないと正常に動作します。

MasterPage を使用するときも使用しないときも
Dim textBox = DirectCast(DetailsView1.FindControl("Code"), TextBox)
textBox.BackColor = Drawing.Color.Silver
textBox.ReadOnly = True
の処理に変わりはないのですよね。
そうすると処理前の過程、処理後の過程が気になります。
処理をどこに記述して、どのように呼び出しているのでしょうか。
TextBox のプロパティをセットしてから変更が反映されないことを確認するまでの間、他
の処理は行われていないでしょうか。

たとえば

MasterPage にメソッドを用意して
[Site1.Master.vb]
Public Sub DisableEdit()
    Dim textBox1 As TextBox = DirectCast(DetailsView1.FindControl("TextBox1"), TextBox)
    textBox1.BackColor = Drawing.Color.Red
    textBox1.ReadOnly = True
End Sub

WebForm のボタンクリックで呼び出す
[WebForm1.aspx.vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    DirectCast(Master, Site1).DisableEdit()
End Sub

といったことをお教えいただけるとありがたいです。

引用返信 編集キー/
■46505 / inTopicNo.4)  Re[3]: DetailsViewでの編集制御
□投稿者/ ゆらり (3回)-(2010/02/04(Thu) 08:06:39)
もりおさん、ご回答ありがとうございます。
MasterPage側はデザインだけを担当し、個々のWebPageでページ固有の処理を記述するようなコーディング規則になっています。なので、MasterPageにメソッドは用意できないと思います。MasterPageのメソッドを呼び出せばできると分かって助かりました。

DetailsViewのPreRenderイベントに記述することで回避(?)しました。

ありがとうございました。
解決済み
引用返信 編集キー/
■46508 / inTopicNo.5)  Re[4]: DetailsViewでの編集制御
□投稿者/ もりお (178回)-(2010/02/04(Thu) 09:19:28)
2010/02/04(Thu) 09:39:15 編集(投稿者)
No46505 (ゆらり さん) に返信
> MasterPageにメソッドは用意できないと思います。
> MasterPageのメソッドを呼び出せばできると分かって助かりました。
> 
> DetailsViewのPreRenderイベントに記述することで回避(?)しました。

解決されたようでなによりなのですが流れを理解できませんでした。
MasterPage に DetailsView を配置されているのですよね。
MasterPage にメソッドを用意できないようでしたら
WebForm で MasterPage の DetailsView を取得するというやり方も出来ます。

[WebForm1.aspx.vb]
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim detailsView1 As DetailsView = DirectCast(Master.FindControl("DetailsView1"), DetailsView)
    Dim textBox1 As TextBox = DirectCast(detailsView1.FindControl("TextBox1"), TextBox)
    textBox1.BackColor = Drawing.Color.Red
    textBox1.ReadOnly = True
End Sub

DetailsViewのPreRenderイベントに言及されているところをみると私は話を読み間違って
いたかもしれません。

解決済み
引用返信 編集キー/
■46548 / inTopicNo.6)  Re[5]: DetailsViewでの編集制御
□投稿者/ ゆらり (4回)-(2010/02/05(Fri) 07:47:11)
> 解決されたようでなによりなのですが流れを理解できませんでした。
> MasterPage に DetailsView を配置されているのですよね。
> MasterPage にメソッドを用意できないようでしたら
> WebForm で MasterPage の DetailsView を取得するというやり方も出来ます。
MasterPageは全体的に共通のデザイン(HeaderやFooter)のみを配置してあります。
DetailsViewや個々の画面で必要なものはすべてWebPage側に配置されています。

WebPageのDetailsViewのTemplate列のControlのプロパティを変更しても反映されていない、という現象です。説明が下手で申し訳ありません(^-^;


引用返信 編集キー/
■46549 / inTopicNo.7)  Re[6]: DetailsViewでの編集制御
□投稿者/ もりお (179回)-(2010/02/05(Fri) 08:55:25)
No46548 (ゆらり さん) に返信

> DetailsViewや個々の画面で必要なものはすべてWebPage側に配置されています。
> WebPageのDetailsViewのTemplate列のControlのプロパティを変更しても反映されていない、という現象です。

そういうことでしたか。私は的外れな回答をしていました。
すみませんでした。

解決済み
引用返信 編集キー/
■46550 / inTopicNo.8)  Re[7]: DetailsViewでの編集制御
□投稿者/ ゆらり (5回)-(2010/02/05(Fri) 08:59:11)
> そういうことでしたか。私は的外れな回答をしていました。
> すみませんでした。
いえいえ。もりおさんの貴重なお時間を割いていただいことに感謝いたします。
また何かありましたらよろしくお願いいたします。
引用返信 編集キー/
■46554 / inTopicNo.9)  Re[8]: DetailsViewでの編集制御
□投稿者/ ゆらり (6回)-(2010/02/05(Fri) 11:41:13)
あれ?解決済みが消えてた。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -