2012-05-04 4 views
0

j'ai 1 répéteur et lient subjectid et SubjectName de Assign_Subjects tables ... et de mettre 1 zone de texte modèle pour insérer des notes obtenues dans chaque sujets @btnInsert_Click événement et je l'ai déjà écrit mon code d'insertion comme ci-dessous et il fonctionne très bien ... et résultat table dans laquelle je veux insérer des marques ainsi que des sujets ...Comment utiliser la fonction de mise à jour dans le contrôle de répéteur de manière dynamique?

Je veux mettre à jour les marques iE insérées (en zone de texte - colonne MarksObtained) dans le contrôle du relais .. .i utilisé le bouton comme btnUpdate pour modifier les zones de texte ....

.aspx Page

<div> 
<table border="0" width="600px" cellpadding="2" cellspacing="1" style="border: 1px solid maroon;"> 
      <asp:Repeater ID="Repeater1" runat="server"> 
       <HeaderTemplate> 
        <tr bgcolor="maroon"> 
         <th> 
          Subject_Id 
         </th> 
         <th> 
          Subject_Name 
         </th> 
         <th> 
          Fill_Marks 
         </th> 
        </tr> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <tr> 
         <td width="100"> 
          <asp:TextBox ID="txtSubjectId" runat="Server" Text='<%#Eval("Subject_Id")%>'></asp:TextBox> 
         </td> 
         <td> 
          <asp:TextBox ID="txtSubjectName" runat="Server" Text='<%#Eval("Subject_Name")%>'></asp:TextBox> 
         </td> 
         <td> 
          <asp:TextBox ID="txtMarks" runat="server" ></asp:TextBox> 
         </td> 
        </tr> 
       </ItemTemplate> 
      </asp:Repeater> 
     </table> 
     <asp:Button ID="btnInsert" runat="server" OnClick="btnInsert_Click" Text="Insert" /> 
     **<asp:Button ID="btnUpdate" runat="server" OnClick="btnUpdate_Click" Text="Insert" />** 
    </div> 

Code derrière - C#

protected void btnInsert_Click(object sender, EventArgs e) 
    { 
     foreach (RepeaterItem repeaterItem in Repeater1.Items) 
     { 
      string subjectId = (repeaterItem.FindControl("txtSubjectId") as TextBox).Text.Trim(); 
      string subjectName = (repeaterItem.FindControl("txtSubjectName") as TextBox).Text.Trim(); 
      string marks = (repeaterItem.FindControl("txtMarks") as TextBox).Text.Trim(); 

      this.SaveData(subjectId, subjectName, marks); 
     } 
    } 

private void SaveData(string subjectId, string subjectName, string marks) 
     { 
      cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DbConnect"].ConnectionString); 
      cn.Open(); 

      SqlCommand cmd = new SqlCommand("Insert into result(id,name,marks) values('"+subjectId+"','"+subjectName+"','"+marks+"')", cn); 

      Repeater1.DataSource = cmd.ExecuteReader(); 

      //Display a popup which indicates that the record was successfully inserted 

      Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Successfuly Inserted. !!');", true); 

      cn.Close(); 
      cmd.Connection.Close(); 
      cmd.Connection.Dispose(); 
     } 

Insérer dans résultat Table

id  varchar(20) 
name varchar(20) 
marks varchar(20) 

Maintenant, la question est de savoir comment puis-je mettre à jour à travers les répéteurs ??? expliqué avec le code plus appriciated ... merci

+0

Tout d'abord, vous devriez utiliser les paramètres pour construire votre SqlCommand sinon vous vous laissez ouvert aux attaques par injection SQL. Deuxièmement - quelle est l'erreur exacte que vous obtenez? –

+0

Je suis confus sur ce que vous essayez d'accomplir. Vous avez un répéteur que je suppose que vous remplissez avec des données. Ensuite, lorsque vous cliquez sur Insérer, il boucle chaque élément dans le répéteur et fait un INSERT dans votre base de données? Je pense plutôt que vous voulez probablement mettre des boîtes de texte sous le répéteur pour ajouter un nouvel élément à la liste? –

+0

kevin principal - j'ai mis à jour ma question ... vous pouvez le voir ... – mack28

Répondre

0

vos boutons à l'intérieur répéteur devraient ressembler à ceci .....

<td> 
    <asp:ImageButton ID="btnSave" runat="server" 
     ImageUrl="~/images/save.png" ToolTip="click to save record" 
     CommandName="SaveData" 
     OnClientClick="return confirm('Conform message before saving')" /> 
</td> 

alors pour capturer les événements générés par l'événement d'utilisation répéteur Répéteur ItemCommand

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    // note that this is the command we assign to save button. 
    // we use it here to capture which button was clicked. 
    if (e.CommandName == "SaveData") 
    { 
     TextBox txtFirstName = e.Item.FindControl("txtFirstName") as TextBox; 
     string fname= txtFirstName.Text; 

     // do somethig with your date here.. 

    } 
} 
Questions connexes