2017-08-30 21 views
1

テーブルを折りたたんで展開するためにブートストラップを使用していますが、これは問題なく動作していますが、IDではなくクラスを使用しています。これで、1つの行を展開すると、それだけでなくすべての行が展開されます。私の質問は、どのようにネストされたリピータのIDで自分のデータターゲットポイントですか? transactionCollapse IDは直接ターゲティングすることができず、私は<%=transactionGroupedList.FindControl("transactionCollapse")%>を実行しようとしましたが、エラーが発生しました。ASPネストされたリピータID

<tbody> 
    <asp:Repeater runat="server" ID="transactionGroupedList" OnItemDataBound="TransactionGroupedDataList_ItemDataBound"> 
     <ItemTemplate> 
      <tr> 
       <!-- This line should target the transactionCollapse ID below instead of the class --> 
       <td data-toggle="collapse" data-target=".transactionCollapse"> 
        <span id="transactionGroupCollapseIcon" runat="server" class="fonticon-down-arrow"></span> 
        <custom:Label runat="server" ID="transactionActivityDataColumnLabel"></custom:Label>&nbsp; 
       </td> 
       <td> 
        <custom:Label runat="server" ID="transactionDateDataColumnLabel"> 
        </custom:Label> 
       </td> 
       <td> 
        <custom:Label runat="server" ID="transactionNumberDataColumnLabel"> 
        </custom:Label> 
       </td> 
       <td> 
        <custom:Label runat="server" ID="transactionAmountDataColumnLabel"> 
        </custom:Label> 
       </td> 
       <td> 
        <custom:Label runat="server" ID="transactionStatusDataColumnLabel"> 
        </custom:Label> 
       </td> 
      </tr> 
      <asp:Repeater runat="server" ID="transactionDetailList" OnItemDataBound="TransactionDetailsDataList_ItemDataBound"> 
       <ItemTemplate> 
        <tr id="transactionCollapse" runat="server" class="collapse transactionCollapse"> 
         <td colspan="2"> 
          <custom:Label runat="server" ID="transactionDetail"> 
          </custom:Label> 
         </td> 
         <td> 
          <custom:Label runat="server" ID="transactionDetailTransactionNumber"> 
          </custom:Label> 
         </td> 
         <td> 
          <custom:Label runat="server" ID="transactionDetailAmount"> 
          </custom:Label> 
         </td> 
        </tr> 
       </ItemTemplate> 
      </asp:Repeater> 
     </ItemTemplate> 
    </asp:Repeater> 
</tbody> 

Online Payment行は/崩壊Posting -MP Payment行以下膨張ものです。このユーザーはOnline Paymentの1つのみですが、多くのユーザーは複数のユーザーを所有します。 This is the output.

+0

レンダリングされた出力に基づいて[JSFiddler](https://jsfiddle.net/)を作成できますか? – Win

答えて

1

あなたにはいくつかの問題があります。まず、リピータ/ GridViewなどの中でFindControlを使用するとインデックスベースです。そのため、正しい項目に対してFindControlを使用する必要があります。 transactionCollapseが最初に発見して、正しい項目のインデックスにアクセスする必要があり、ネストされたリピータであるため、

transactionGroupedList[i].FindControl("transactionCollapse") 

しかし上記は、まだ動作しません。

transactionGroupedList.Items[0].FindControl("transactionDetailList").Items[0]... 

しかしにFindControlはtransactionDetailListは、インデックスベースのアイテムとリピーターであることを知らないので、これも動作しません。したがって、ネストされたリピータを最初にキャストしてアイテムにアクセスする必要があります。したがって、これになります

<%= ((Repeater)transactionGroupedList.Items[i].FindControl("transactionDetailList")).Items[i].FindControl("transactionCollapse").ClientID %> 
関連する問題