2017-05-22 2 views
0

J'ai un répéteur limité par des enregistrements provenant d'une source. le contenu du répéteur ressemble à ceciComment faire pour obtenir les éléments d'une ligne et d'une colonne de répéteur dans un tableau ou une liste dans asp.net

Science  5    67 

    Art   3    57 

à la fin de la journée, je veux obtenir le résultat de ce répéteur comme celui-ci {Science, Art}{5,3}{67,57} afin que je puisse enregistrer dans la base de données. Si vous avez un autre moyen que je peux obtenir pour enregistrer cette table dans la base de données pour un étudiant particulier, veuillez suggérer.

<asp:Repeater ID="repeater" runat="server" OnItemDataBound="repeater_ItemDataBound"> 
    <HeaderTemplate></HeaderTemplate> 
    <ItemTemplate> 
    <tr> 
     <td class="ctg-type"> 
     <strong> <%#Eval("SubjectName") %> </strong> <span><strong> <%#Eval("Unit") %></strong></span> 
     </td> 
     <td class="cgt-des"> 
     <%# Eval("Score") %> 
     </td> 
    </tr> 
    </ItemTemplate> 
</asp:Repeater> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    repeater.DataSource = getSudentRecord(); 
    repeater.DataBind(); 
} 

public DataTable getStudentRecord() 
{ 
    using (SqlCommand command = new SqlCommand("StudentRecord", con)) 
    { 
    command.CommandType = CommandType.StoredProcedure; 
    con.Open(); 
    command.ExecuteNonQuery(); 
    var data = new SqlDataAdapter(command); 
    var Table = new DataTable(); 
    data.Fill(Table); 
    con.Close(); 
    return Table; 
    } 
} 
+0

S'il vous plaît préciser: vous récupérez les données ** pour le répéteur ** ** ** de la db et que vous souhaitez enregistrer les données ** du ** répétiteur ** au ** db. Qu'est-ce que je ne comprends pas? –

+0

"résultat de ce répéteur". Qu'est-ce que ça veut dire? L'utilisateur met à jour quelque chose dans les champs dans le répéteur? Ce n'est pas du tout clair ce que vous voulez dire. Vous devez montrer un code réel, je pense – ADyson

+0

Pour le rendre clair. Le tableau ci-dessus est affiché à l'aide d'un répéteur. Les lignes et la colonne peuvent changer. Ce que je veux faire cependant, c'est obtenir le contenu du répéteur ci-dessus de cette manière {Science, Art} {5,3} {67,57} et puis enregistrer dans la base de données. Ce que je veux faire est de sauvegarder le contenu de la table (répéteur) ci-dessus et de l'enregistrer dans la base de données. – Mcbaloo

Répondre

1

Cette approche analysera le DataTable deux fois:

 DataTable foo = getSudentRecord(); 

     string serializedFormat = "{{{0}}},{{{1}}},{{{2}}}"; 
     List<string> subjectnames = new List<string>(); 
     List<string> units = new List<string>(); 
     List<string> scores = new List<string>(); 
     foreach (DataRow row in foo.Rows) 
     { 
      subjectnames.Add(row["SubjectName"].ToString()); 
      units.Add(row["Unit"].ToString()); 
      scores.Add(row["Score"].ToString()); 
     } 

     string serialized = String.Format(serializedFormat, 
      String.Join(",",subjectnames.ToArray()), 
      String.Join(",", units.ToArray()), 
      String.Join(",", scores.ToArray()) 
      ); 


     //finally fill the repeater 
     repeater.DataSource = foo; 
     repeater.DataBind();