2010-01-30 3 views
1

J'ai deux grilles sur la même page. La première grille contient des données et des cases à cocher sont activées. En cliquant sur un bouton, je veux copier uniquement les données cochées sur l'autre grille.Copier toutes les données d'une grille à l'autre, mais celles de la première grille cochées

Je l'ai fait - mais il copie seulement un élément de la première grille à la seconde. S'il vous plaît aider.

Mon code:

int RowNo = 0;   
foreach (GridViewRow row in GridView1.Rows) 
{ 
    RowNo = RowNo + 1; 
    bool Checkbox = ((CheckBox)row.FindControl("CheckBox1")).Checked; 

    if (Checkbox = true) 
    { 
     SqlConnection myConn = new SqlConnection(); 
     myConn.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\eRashshala.mdf;Integrated Security=True;User Instance=True"; 
     myConn.Open(); 

     GridViewRow Row = GridView1.Rows[RowNo - 1]; 
     String Name = Row.Cells[2].Text;     
     SqlDataAdapter da = new SqlDataAdapter("Select LatinName,IngName,MaterialForm from IngredientInfo Where IngName='" + Name + "'", myConn); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "IngredientInfo"); 
     GridView2.DataSource = ds.Tables[0]; 
     GridView2.DataBind(); 
    } 
} 

Répondre

0

Il me semble que si vous n'effectuez la copie pour une seule ligne dans la grille, ce qui expliquerait pourquoi une seule chose est copiée. Vous commencez avec:

bool Checkbox = ((CheckBox)row.FindControl("CheckBox1")).Checked; 
if (Checkbox = true) 
    { 
     // Perform copy... 
    } 

Mais pour autant que je peux voir, la première ligne applique uniquement à l'emprise actuelle des données. Vraisemblablement, la variable "row" est acquise d'une certaine manière à partir de la grille. Le code que vous montrez fait-il partie d'une boucle foreach? Si ce n'est pas le cas, alors j'imagine que tout ce que vous devez faire est de boucler toutes les lignes de votre grille, et d'effectuer l'insertion pour chaque ligne, plutôt qu'une seule. Vous pouvez (et probablement devriez) regrouper vos écritures dans une seule transaction DB, plutôt que d'écrire plusieurs fois, mais ceci est une optimisation des performances et n'affecte pas la fonctionnalité.

Questions connexes