@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

データ表示時の文字列編集方法

1
投稿者投稿内容
ojiboss
ベテラン
会議室デビュー日: 2008/02/06
投稿数: 52
投稿日時: 2008-04-11 09:59
DataListにSQLDataSourceを使ってLabelにデータを表示させているのですが、
データの中に郵便番号や電話番号があり、ハイフン編集をして表示させたいのですが、
どのようにすれば良いかわかりません。
LabelタスクのDataBindingsの編集-カスタムバインドのコード式で
DataBinder.Evalメソッドの第3引数の書式指定でできないものかと調べてみましたが
わからずじまいで困っています。

VS2008
VB

[ メッセージ編集済み 編集者: ojiboss 編集日時 2008-04-11 09:59 ]
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-11 10:21
郵便番号なんかは標準の書式指定文字列では、できなかったような気がします。
コードビハインドファイル側で、クラスの中に Protected なメソッドを追加して、
それにカスタムバインドすればどうでしょう?

コード:
Protected Function FormatZipCode(zipCode As Object) As String

    ' ここで郵便番号を書式化して Return する

End Function



テンプレート側は、カスタムバインド式に

FormatZipCode(Eval("列名"))

みたいな感じで使えます。
ojiboss
ベテラン
会議室デビュー日: 2008/02/06
投稿数: 52
投稿日時: 2008-04-11 11:04
>テッテさん
レスありがとうございます。
ご教授いただいた方法を試しましたが、ハイフン編集されず、またエラーも表示される
こともなくページが表示されます。
コードビハインドファイル側で、クラスの中のFormatZipCodeメソッドには以下の
コードを書きました。

Protected Function FormatZipCode(ByVal zipCode As Object) As String
  
FormatZipCode = String.Format(zipCode.ToString(), "###-####")

End Function

テンプレート側は、カスタムバインド式にFormatZipCode(Eval("列名")) を
設定しました。

何がたりないでしょうか?
デバッグしても、FormatZipCodeメソッドがコールされていません。

よろしくお願いします。


ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2008-04-11 11:15
引用:

ojibossさんの書き込み (2008-04-11 11:04) より:

コード:

Protected Function FormatZipCode(ByVal zipCode As Object) As String
    FormatZipCode = String.Format(zipCode.ToString(), "###-####")
End Function


テンプレート側は、カスタムバインド式にFormatZipCode(Eval("列名")) を
設定しました。

何がたりないでしょうか?
デバッグしても、FormatZipCodeメソッドがコールされていません。


(コードをcodeで囲みました)
zipCode を ToString() すると、文字列になります。
文字列には書式 "###-####" を使用できません。

これでわかりますか?
(ちょっと時間がないのであんまり詳しく説明してるヒマがないですが)

FormatZipCode メソッドが呼ばれない理由はちょっとわからないです。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-11 11:42
メソッド内のコードに問題があるのは、ぽぴ王子さんがご指摘している通りです。
データベースの郵便番号の列はどういう型で、どういう形式で保持しているのでしょう?

FormatZipCode メソッドや、テンプレート内の記述については、
見直してみましたが、合っているように思えます。
デバッグで通らない原因は私にもわかりません。
リビルドして再度確認してみてもらえますか?
ojiboss
ベテラン
会議室デビュー日: 2008/02/06
投稿数: 52
投稿日時: 2008-04-11 12:10
>ぽぴ王子さん、テッテさん
ご指摘ありがとうございます。String.Formatの使い方を理解していませんでした。

使い方を理解し、無事ハイフン編集ができました。
デバッグでコールされない原因はデバッグ設定のミスでした。すいません。
ありがとうございました。

ただ、このようなハイフン編集メソッドなどを各ページに記述するのは保守性が悪いので
編集クラスを作って、カスタムバインドで使用することはできないのでしょうか?

また、今回のようなカスタムバインドのコード式の使用方法がのっている参考URLがあれ
ば教えていただければ幸いです。

よろしくお願いします。
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-11 12:53
引用:

ojibossさんの書き込み (2008-04-11 12:10) より:
ただ、このようなハイフン編集メソッドなどを各ページに記述するのは保守性が悪いので
編集クラスを作って、カスタムバインドで使用することはできないのでしょうか?


編集クラスってどういうものを想像されているのか、よくわかりませんが、
Public な Shared メソッドを公開するクラスを作って、以下のようにすることはできます。

App_Code 内のどこかで、こんなクラスを定義しておいて

コード:
Public Class EditClass

    Public Shared Function FormatZipCode(ByVal zipCode As Object) As String

        ' ここで郵便番号を書式化して Return する

    End Function

End Class



カスタムバインド式には、以下のように書きます。

EditClass.FormatZipCode(Eval("列名"))
ojiboss
ベテラン
会議室デビュー日: 2008/02/06
投稿数: 52
投稿日時: 2008-04-11 13:13
>テッテさん
ご教授ありがとうございます。
実装したいと思います。本当にありがとうございました。
1

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