Listの各値を各セルへバインドするには?


himizu  2013-02-19 04:49:57  No: 148084

=====================================================================================================
前提内容
=====================================================================================================
■使用環境
VB2008
.NET Framework 3.5SP1

■GridView表形式
--------------------------------------------
| 氏名 | 電話番号1 | 電話番号2 | 電話番号3 |
--------------------------------------------
|      |           |           |           |
--------------------------------------------

■クラス
Public Class userInfo
    Public mUserName As String
    Public mPhoneNumberLst As List(Of String)   '//最大3件まで

    Public ReadOnly Property UserName() As String
        Get
            Return mUserName
        End Get
    End Property
    Public ReadOnly Property PhoneNumberLst() As List(Of String)
        Get
            Return mPhoneNumberLst
        End Get
    End Property
End Class

■aspx
<asp:TemplateField HeaderText="氏名">
<ItemTemplate>
<asp:Label ID="LabelUserName" runat="server" Text='<%# Bind("UserName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="電話番号1">
<ItemTemplate>
<asp:Label ID="LabelPhoneNum1" runat="server" Text='<%# Bind("????????") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="電話番号2">
<ItemTemplate>
<asp:Label ID="LabelPhoneNum2" runat="server" Text='<%# Bind("????????") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="電話番号3">
<ItemTemplate>
<asp:Label ID="LabelPhoneNum3" runat="server" Text='<%# Bind("????????") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

=====================================================================================================
質問内容
=====================================================================================================
上記のクラスをGridViewにバインドしたいと思っています。
電話番号については、リストで管理しています。
リストで管理している電話番号をGridViewの
電話番号1〜3にバインドしたいのですが、方法が分かりません。

たとえば、電話番号リストのGetプロパティを以下のようにした場合、

Public ReadOnly Property PhoneNumberLst(ByVal Index As Integer) As String
    Get
        If mPhoneNumberLst(Index) IsNot Nothing Then
            Return mPhoneNumberLst(Index)
        End If
        Return ""
    End Get
End Property

バインドのコード式に以下記述すると「Bind への呼び出しの形式が適切ではありません。」とエラーがでます。
<asp:Label ID="LabelPhoneNum1" runat="server" Text='<%# Bind("PhoneNumberLst(0)") %>'></asp:Label>
<asp:Label ID="LabelPhoneNum2" runat="server" Text='<%# Bind("PhoneNumberLst(1)") %>'></asp:Label>
<asp:Label ID="LabelPhoneNum3" runat="server" Text='<%# Bind("PhoneNumberLst(2)") %>'></asp:Label>

良い方法が御座いましたらご教示お願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加