c#
  • asp.net
  • binding
  • repeater
  • 2011-02-01 6 views 1 likes 
    1
    <asp:Repeater ID="Repeater_RatingQuestions_Individuals" runat="server"> 
           <ItemTemplate> 
            <asp:Label CssClass="bold center" ID="Label1" runat="server"  Text='<%# DataBinder.Eval(Container.DataItem,"Question")%>' /> 
            <asp:Repeater ID="Repeater_RatingAnswers_Individuals" runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem, "Answers") %>'> 
             <HeaderTemplate> 
              <table cellpadding="5" cellspacing="8"> 
             </HeaderTemplate> 
             <ItemTemplate> 
              <tr> 
               <td> 
                <asp:Label ID="Label3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"UserID")%>' /> 
               </td> 
               <td> 
                <asp:Label ID="Label4" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Answer") %>' /> 
               </td> 
               <td> 
                <asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Value") %>' /> 
               </td> 
              </tr> 
             </ItemTemplate> 
             <FooterTemplate> 
              </table> 
             </FooterTemplate> 
            </asp:Repeater> 
           </ItemTemplate> 
          </asp:Repeater> 
    

    これは私のリピータです。オブジェクトのいくつかの他の一般的なリストを作成することなく、ASP.NETリピータ:最初のアイテムに1つの要素を表示できますが、残りのアイテムは表示できませんか?

    public class cQuestion 
    { 
        public string Question { get; set; } 
        public List<cAnswer> Answers { get; set; } 
    } 
    public class cAnswer 
    { 
        public string Answer { get ; set; } 
        public uint Value { get; set; } 
        public string UserID { get; set; } 
    } 
    

    、ネストされたリピータで、最初のレコードのためのユーザーIDを表示することが可能であろうが、それらの残りの部分は表示されませ:私は2つのクラスを持っていますユーザーID?可能であれば、私は代わりの解決策をとるだけでいいです。新しいプロパティや新しいクラスを追加しなくてもこれが可能かどうかを知りたかっただけです。前もって感謝します。

    +0

    の後ろにあなたのコードにうん、ちょうどあなたのItemTemplateに –

    答えて

    2

    申し訳ありませんが少しオフになっている場合(私は非常に長い時間リピーターを使用していません)。あなたはリピータ内からコードビハインド関数を呼び出すことを試みましたか?

    <asp:Repeater ID="Repeater_RatingQuestions_Individuals" runat="server"> 
        <ItemTemplate> 
         <asp:Label CssClass="bold center" ID="Label1" runat="server"  Text='<%# DataBinder.Eval(Container.DataItem,"Question")%>' /> 
    
         <%# SetShowIDToTrue() %> 
    
         <asp:Repeater ID="Repeater_RatingAnswers_Individuals" runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem, "Answers") %>'> 
          <HeaderTemplate> 
           <table cellpadding="5" cellspacing="8"> 
          </HeaderTemplate> 
          <ItemTemplate> 
           <tr> 
            <td> 
             <asp:Label ID="Label3" runat="server" Text='<%# ShouldThisBeWrittenOut(DataBinder.Eval(Container.DataItem,"UserID"))%>' /> 
            </td> 
            <td> 
             <asp:Label ID="Label4" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Answer") %>' /> 
            </td> 
            <td> 
             <asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Value") %>' /> 
            </td> 
           </tr> 
          </ItemTemplate> 
          <FooterTemplate> 
           </table> 
          </FooterTemplate> 
         </asp:Repeater> 
        </ItemTemplate> 
    </asp:Repeater> 
    

    その後

    private bool ShowUID { get; set; } 
    
    private int? ShouldThisBeWrittenOut(int UserID) 
    { 
        if (ShowUID) { 
         ShowUID = false; 
         return UserID; 
        } else { 
         return null; 
        } 
    } 
    
    private void SetShowIDToTrue() 
    { 
        ShowUID = true; 
    } 
    
    +0

    に関数呼び出しを追加するだけでそれをテストしました。これはスタートですが、複数のユーザーがいます。私はそれを明確にしていないと推測しています。各ネストされたリピータの各最初の項目。 – pqsk

    +0

    私は少し例を変えた...ああ待って、私はそれを得る。原則はまだ適用されますが、あなたは 'ShowUID'をリセットするロジックを変更する必要があります...私は見てgunnaです... –

    +0

    私は別の編集をしました。外側のリピータで '<%#SetShowIDToTrue()%>'に注目してください。 –

    関連する問題