2017-10-04 6 views
1

Je veux lier la liste avec plusieurs repeater.But Je reçois une erreur sur binding.Please aiderrépéteur de liaison avec la liste de plusieurs <>

Cette liste est la liste des enfants de parents. Je reçois erreur

Une exception de type 'System.Web.HttpException' a eu lieu dans System.Web.dll

mais n'a pas été traitée dans le code utilisateur

Informations complémentaires: DataBinding: "Questionm" ne contient pas de propriété avec le nom "Réponse".

**code** 
    **class Name:** 

    public class Questionm 
    { 
     public int QID { get; set; } 
     public string Question { get; set; } 
     public int AnswerType { get; set; } 
     public List<ChildLayers> ChildLayers { get; set; } 
     public Questionm() 
     { 
      ChildLayers = new List<ChildLayers>(); 
     } 

    } 

    public class ChildLayers 
    { 
     public int QuestionID { get; set; } 
     public string Answer { get; set; } 
    } 

**ASPX.cs Code** 

public void daya() 
    { 
     SqlConnection con = new SqlConnection("Data Source=ADMIN-PC;Initial Catalog=Test;Integrated Security=True"); 
     SqlCommand cmd = new SqlCommand(); // 
     cmd.CommandText = "selectdata"; 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.StoredProcedure; 
     con.Open(); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 

     DataTable DT = new DataTable(); 
     DT = ds.Tables["Table"]; 
     DataTable DT1 = new DataTable(); 
     DT1 = ds.Tables["Table1"]; 

     IList<Questionm> data = ConvertDataTable<Questionm>(DT); 
     IList<ChildLayers> cdata = ConvertDataTable<ChildLayers>(DT1); 
     IList<Questionm> hierarcy = new List<Questionm>(); 

     List<Questionm> dsfsadsad = new List<Questionm>(); 
     foreach (var layer in data) 
     { 
     Questionm obj = new Questionm(); 

      obj.QID = layer.QID; 
      obj.Question = layer.Question; 
      obj.AnswerType =layer.AnswerType;  
     var sublayers1 = cdata.Where(i => i.QuestionID == layer.QID && i.QuestionID != 0); 

     foreach (var sublayer in sublayers1) 
     { 
      ChildLayers obj1 = new ChildLayers(); 
      obj1.Answer = sublayer.Answer; 
      obj1.QuestionID = sublayer.QuestionID; 

      obj.ChildLayers.Add(obj1); 

     } 
     hierarcy.Add(obj); 

    } 

     rptparent.DataSource = hierarcy; 
     rptparent.DataBind(); 
} 

**.aspx code** 
<asp:repeater id="rptparent" runat="server"> 
      <HeaderTemplate> 
    <table> 
     <tr> 
       <th>Question</th> 

     </tr> 
    </HeaderTemplate> 
     <ItemTemplate> 
     <tr> 
      <td> 
      <%# ((Questionm)Container.DataItem).QID %> 
      </td> 

      <%# ((Questionm)Container.DataItem).Question %> 

      <asp:RadioButton ID="RadioButton1" runat="server" Text='<%# Eval("Answer") %>' /> 
      <%--Answer Text='<%# Eval("FileName") %>'>--%> 


     </tr> 
     </ItemTemplate> 
     <FooterTemplate>  
     </table><br /> 
    </FooterTemplate> 
    </asp:repeater></td></tr> 

Maintenant ima obtenir cette erreur enter image description here

Une exception de type 'System.Web.HttpException' a eu lieu en System.Web.dll mais n'a pas été traitée dans le code utilisateur

Informations complémentaires : DataBinding: "Questionm" ne contient pas une propriété avec le nom "Réponse".

+0

'Eval (« Réponse »)' 'essayer d'accéder à la propriété Answer' sur la classe' Questionm' alors qu'il n'y a pas de bien dans cette catégorie qui est la raison pour laquelle vous obtenez cette erreur. Vous devez éviter cela. Pouvez-vous nous dire pourquoi vous essayez d'accéder à la propriété 'Answer'' Questionm'? –

Répondre

0

L'exception indique clairement que vous accédez à un nom de propriété non valide à partir de la liste de sources de données. Le nom de propriété 'Answer' n'existe pas dans votre liste d'objets.

Questionm n'a pas de propriété 'Réponse'.

EDIT: Comme vous avez déclaré une propriété de type liste dans la classe Questionm, vous devez parcourir la classe pour accéder à la propriété 'Réponse'.

Exemple:

((Questionm)Container.DataItem).Question.ChildLayers[0].Answer 
+0

J'ai listé cette liste publique ChildLayers {get; ensemble; } dans la classe Questionm. Le paramètre de couche enfant devrait être accessible. –

+0

Partagez votre code et le code .aspx –

+0

déjà partagé. –