2009-10-05 3 views
0

J'essaie de supprimer une ligne de la grille et de la base de données ... Il doit être supprimé si un bouton de lien delte est cliqué dans le gridview .. Je suis dans l'index des lignes comme suit :Supprimer la ligne de la grille sélectionnée et de la base de données

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    LinkButton btn = (LinkButton)sender; 
    GridViewRow row = (GridViewRow)btn.NamingContainer; 
    if (row != null) 
    { 
    LinkButton LinkButton1 = (LinkButton)sender; 

    // Get reference to the row that hold the button 
    GridViewRow gvr = (GridViewRow)LinkButton1.NamingContainer; 

    // Get row index from the row 
    int rowIndex = gvr.RowIndex; 
    string str = rowIndex.ToString(); 
    //string str = GridView1.DataKeys[row.RowIndex].Value.ToString(); 
    RemoveData(str); //call the delete method 

    } 
} 

maintenant je veux le supprimer ... donc je rencontre des problèmes avec ce code .. je reçois une erreur

doit déclarer la variable scalaire « @original_MachineGroupName » ... des suggestions

private void RemoveData(string item) 
{ 
    SqlConnection conn = new SqlConnection(@"Data Source=JAGMIT-PC\SQLEXPRESS; 
    Initial Catalog=SumooHAgentDB;Integrated Security=True"); 
    string sql = "DELETE FROM [MachineGroups] WHERE [MachineGroupID] = 
       @original_MachineGroupID; 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    cmd.Parameters.AddWithValue("@original_MachineGroupID", item); 

    conn.Open(); 

    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 

Blockquote

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>" 
    SelectCommand="SELECT MachineGroups.MachineGroupID, MachineGroups.MachineGroupName, 
    MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded, 
    MachineGroups.CanBeDeleted, COUNT(Machines.MachineName) AS Expr1, 
    DATENAME(month, (MachineGroups.TimeAdded - 599266080000000000)/864000000000) + 
    SPACE(1) + DATENAME(d, (MachineGroups.TimeAdded - 599266080000000000)/
    864000000000) + 
    ', ' + DATENAME(year, (MachineGroups.TimeAdded - 599266080000000000)/
    864000000000) AS Expr2 FROM MachineGroups FULL OUTER JOIN Machines ON 
    Machines.MachineGroupID = MachineGroups.MachineGroupID GROUP BY 
    MachineGroups.MachineGroupID, MachineGroups.MachineGroupName, 
    MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded, 
    MachineGroups.CanBeDeleted" 
    DeleteCommand="DELETE FROM [MachineGroups] WHERE 
        [MachineGroupID] [email protected]_MachineGroupID" > 
     <DeleteParameters> 
      <asp:Parameter Name="@original_MachineGroupID" Type="Int16" /> 
      <asp:Parameter Name="@original_MachineGroupName" Type="String" /> 
      <asp:Parameter Name="@original_MachineGroupDesc" Type="String" /> 
      <asp:Parameter Name="@original_CanBeDeleted" Type="Boolean" /> 
      <asp:Parameter Name="@original_TimeAdded" Type="Int64" /> 
     </DeleteParameters> 
</asp:SqlDataSource> 

Je reçois encore une erreur: doit déclarer la variable scalaire "@original_MachineGroupID"

Répondre

0

Vous n'êtes pas l'ajout d'un paramètre @original_MachineGroupName à votre requête. Votre requête fait référence à plusieurs variables et vous n'en avez ajouté qu'une seule.

cmd.Parameters.AddWithValue("@original_MachineGroupID", item); 
cmd.Parameters.AddWithValue("@original_MachineGroupName", itemName); 
cmd.Parameters.AddWithValue("@original_MachineGroupDesc", itemDesc); 
cmd.Parameters.AddWithValue("@original_CanBeDeleted", true); 
cmd.Parameters.AddWithValue("@original_TimeAdded", time); 

Vous aurez besoin de trouver les informations supplémentaires pour répondre à votre requête, ou bien modifier votre requête pour en supprimer le besoin.

+0

donc j'ai besoin de passer toutes les valeurs comme itemname, itemdesc et ainsi de suite .. individuellement ?? Je suis juste en train de supprimer le numéro de ligne à supprimer .. Existe-t-il une méthode plus simple pour ce faire .. Merci – user175084

+0

Eh bien, votre requête de suppression vérifie spécifiquement ces choses. Ma conjecture est que la rangée ne peut pas être identifiée de manière unique sans toutes ces informations. Vous devez soit simplifier votre requête de suppression pour exiger uniquement l'ID, soit vous devez lui transmettre toutes les informations dont il a besoin. – womp

+0

J'ai simplifié la requête de suppression comme ci-dessus .. stll il ne supprime pas .. est-ce la seule façon de supprimer des lignes ... s'il vous plaît aider – user175084

0

Vous avez plusieurs paramètres dans votre requête, c'est-à-dire @original_MachineGroupName, mais vous ajoutez uniquement un paramètre réel à votre objet de commande. Vous en aurez besoin d'un pour chaque paramètre de la requête.

+0

est-il un moyen simple de le faire ... tout exemple ou lien sera grand .. – user175084

0

Le code suivant supprimera la ligne de la base de données si la chaîne que vous passez à la méthode est la clé primaire ou unique dans le tableau:

string sql = "DELETE FROM [MachineGroups] WHERE [MachineGroupID] = 
        @original_MachineGroupID"; 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    cmd.Parameters.AddWithValue("@original_MachineGroupID", item); 
+0

monsieur j'ai essayé cette commande .. il ne fonctionne toujours pas .. Je sais que la commande est juste ... encore vous pouvez aider moi .. est-il un certain problème avec ma page .aspx ?? J'ai posté le code sur le dessus .. – user175084

0

Surveillez votre databinding aussi. Si vous supprimez une ligne de la base de données, cela ne supprime pas les données de la grille. Vous devrez ré-extraire vos données et les recomposer.

+0

monsieur la fonction de suppression elle-même ne fonctionne pas .. s'il vous plaît pouvez-vous me dire un moyen simple de le faire ... Je ne sais pas pourquoi quelque chose ne fonctionne pas ?? – user175084

+0

le problème principal je pense qu'il ne reçoit pas l'id de machinegroup il doit supprimer ... insted il obtient le numéro de ligne ..donc quand je glisse sur supprimer rien ne semble arriver ... – user175084

Questions connexes