- PR -

Repeaterを入れ子にするには

1
投稿者投稿内容
MI
常連さん
会議室デビュー日: 2007/01/30
投稿数: 30
投稿日時: 2007-11-15 23:24
お世話になっております。
日を空けずに質問で恐縮ですが、表題の件について教えて下さい。

ASP.net + VB で
一行に 複数の行が含まれるリストを作成しております。
---------------------
件名 |アクセス日| 人 |
---------------------|
重要 |8/11   | 田中 |
    |8/13   | 佐藤 |
---------------------

50件表示のページング機能も取り入れる為
PagedDataSourceクラス,
DataTable,
Repeaterの入れ子
で実現しようと思うのですが、内側のRepeater2にデータがバインドしません。

Repeater2の記述に、何かが足りない?DataTableでは入れ子にできない?
等を想像しているのですが、どうしても分からない為
大変お手数ですが、間違っている箇所等をご指摘頂けませんでしょうか。

-----------------------
<table>
 <tr>
  <th>件名</th>
  <th>アクセス日</th>
  <th>人</th>
 </tr>
 <asp:Repeater ID="Repeater1" runat="server">
  <ItemTemplate>
   <tr>
    <td><%#DataBinder.Eval(Container.DataItem, "KENMEI")%></td>
     <td colspan="2">     ※枡を横2つ潰して、中に枡二つのテーブル作成
      <table>
       <asp:Repeater ID="Repeater2" runat="server"
DataSource='<%# DataBinder.Eval(Container.DataItem, "FILELST") % >'> 
        <ItemTemplate>
         <tr>
          <td><%#DataBinder.Eval(Container.DataItem, "AKUSESU")%></td>
          <td><%#DataBinder.Eval(Container.DataItem, "HITO")%></td>
         </tr>
        </ItemTemplate>
       </asp:Repeater>
      </table>
     </td>
    </tr>
  </ItemTemplate>
 </asp:Repeater>
</table>
-----------------------

Private Shared Function GetSearchList() As PagedDataSource
  Dim dt As New DataTable
  Dim dr As DataRow
  Dim dt2 As New DataTable
  Dim dr2 As DataRow
  Dim pg As New PagedDataSource

  '内側のリピータソース
  dt2.Columns.Add("AKUSESU") 'アクセス日
  dt2.Columns.Add("HITO") '人

  dr2 = dt2.NewRow
  dr2("AKUSESU") = "8/11"
  dr2("HITO") = "田中"
  dt2.Rows.Add(dr2)

  dr2 = dt2.NewRow
  dr2("AKUSESU") = "8/13"
  dr2("HITO") = "佐藤"
  dt2.Rows.Add(dr2)

  '外側のリピータソース
  dt.Columns.Add("KENMEI") '件名
  dt.Columns.Add("FILELST")

  dr = dt.NewRow
  dr("KENMEI") = "重要"
  dr("FILELST") = dt2 '※Repeater2の中身
  dt.Rows.Add(dr)

  pg.DataSource = dt.DefaultView

  Return pg
End Function

-----------------------
Page_Load
  Private pgdArticles As New PagedDataSource

  pgdArticles = GetSearchList
  pgdArticles.AllowPaging = True
  pgdArticles.PageSize = 50
  pgdArticles.CurrentPageIndex = 1

  Repeater1.DataSource = pgdArticles
  Repeater1.DataBind()

-------------------------
結果
---------------------
件名 |アクセス日| 人 |
---------------------|
重要 |(バインドされない)|
    |          |
---------------------

長文申し訳ございません。
どうぞよろしくお願い致します。

[コード訂正いたしました]



[ メッセージ編集済み 編集者: MI 編集日時 2007-11-15 23:27 ]
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2007-11-19 13:59
ソース読んでませんが、過去ログが参考になりませんかね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2377&forum=7
MI
常連さん
会議室デビュー日: 2007/01/30
投稿数: 30
投稿日時: 2007-11-19 20:39
まるく 様

ご回答ありがとうございます。
とても役立ちそうなリンクですね!

Cを未経験なので、VBに少しずつ読み替えながら、テストしております。
解決までに、少々お時間頂きたく思います。

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

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