- PR -

ItemTemplate でのマスタの名称表示

1
投稿者投稿内容
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-08 22:49
ASP.NET で SqlDataSource と GridView や DetailsView で
データを更新する場合を考えます。
テーブルをコード値で更新し、そのコードに対する名称をマスタテーブルに
持っている場合、データをドロップダウンで入力させることがあると思います。
このような場合、テンプレートフィールドにして、
EditItemTemplate や InsertItemTemplate 内では、
DropDownList を配置して SelectedValue プロパティにバインドしています。

さて、EditItemTemplate や InsertItemTemplate はこれでよいのですが、
ReadOnly モードのときの表示(ItemTemplate)において、
名称を表示させたいのですが、良い方法はないものでしょうか?

例えば同じように DropDownList を配置して、Enabled を False に設定するのも手ですが、
見た目は当然ながらドロップダウンリストです。
このような形ではなく、通常のテキスト(Label コントロールのような)として、
表示させる簡単な方法を探しています。

コードから名称を取得するようなメソッドを1つ用意して、
カスタムバインド式に設定するという手は考えて、これで実現はできたのですが、
DropDownList ならコードを手で書かずに作れるわけですから、
何かいい方法がないかと思った次第です。

よろしくお願いします。
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-04-09 09:19
コードと名称を紐付けたビューを用意して、それを参照するというのはいかがでしょうか?
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-09 09:30
引用:

テッテさんの書き込み (2008-04-08 22:49) より:

コードから名称を取得するようなメソッドを1つ用意して、
カスタムバインド式に設定するという手は考えて、これで実現はできたのですが、



私もたぶんこの方法でいくと思います。
もしくは、お望みの機能を持ったLabelコントロールを作っちゃうとか。
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-09 14:09
実はもっと簡単なやり方があって、私が知らないだけなのかと思って
質問させていただきましたが、そうでもないのですね。

ありがとうございました。

rain さんのヒントを元に、カスタムコントロールも作って、
表示することができましたので、そのソースを載せておきます。

コード:

Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

<DefaultProperty("SelectedValue"), ToolboxData("<{0}:DisplayMemberLabel runat=server></{0}:DisplayMemberLabel>")> _
Public Class DisplayMemberLabel
Inherits DropDownList

Protected Overrides ReadOnly Property TagKey() As System.Web.UI.HtmlTextWriterTag
Get
Return HtmlTextWriterTag.Span
End Get
End Property

Protected Overrides Sub RenderContents(ByVal writer As System.Web.UI.HtmlTextWriter)
If Me.SelectedItem IsNot Nothing Then
writer.Write(Me.SelectedItem.Text)
End If
End Sub

End Class



※ValueMemberLabel という名前にしましたが、よく考えたら、
ValueMembr じゃなくて DisplayMember を表示しているので、
クラス名を修正しました。

ValueMemberLabel → DisplayMemberLabel

[ メッセージ編集済み 編集者: テッテ 編集日時 2008-04-09 14:23 ]
1

スキルアップ/キャリアアップ(JOB@IT)