Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[c#]probleme de programmation ou de logique ou bien des deux!!

5 réponses
Avatar
nima84
bonjour à tous;
voila,j'ai deux gridviews et je voudrai pouvoir en clickant sur un boutton
parcourir le premier ligne par ligne et verifier pour chaque ligne si elle
existe dans le deuwieme gridview,si elle n'existe pas je l'insere dans mon
deuxieme gridview,le test d'existance je le fais sur les identifiants de
chaque gridviews
pour etre plus claire voila mon code pour ce boutton :
>>
protected void Button1_Click(object sender, EventArgs e)
{
int j = 0;

for (int i = 0; i <= GridView1.Rows.Count; i++)
{
do
{
j++;
}
while ((j != GridView2.Rows.Count) &&
(GridView1.Rows[i].Cells[1].Text != GridView2.Rows[j].Cells[1].Text));

if (j == GridView2.Rows.Count)
{
Label1.Text = GridView1.Rows[i].Cells[1].Text;
SqlDataSource2.Insert();
}
>>

à chaque fois que je lance l'execution j'ai l'erreur suivante : "Index was
out of range. Must be non-negative and less than the size of the collection.
Parameter name: index "
si quelqu'un pouvait m'aidé afin que ça marche je lui serai trés
reconnaissante
merci pour tout d'avance
respectueusement ,
nima84

5 réponses

Avatar
Jay
Essaye un peu ceci:

protected void Button1_Click(object sender, EventArgs e)
{
for(int i=0;i<GridView1.Rows.Count;i++)
{
bool bFoundúlse;
for(int j=0;i<GridView2.Rows.Count;j++)
{
if(GridView1.Rows[i].Cells[1].Text==GridView2.Rows[j].Cells[1].Text)
{
bFound=true;
break;
}
}
if(!bFound)
{
Label1.Text=GridView1.Rows[i].Cells[1].Text;
SqlDataSource2.Insert();
}
}
}

En 1.1, on aurait pu faire un merge des 2 DataSet.
Je sais qu'en 2.0, la propriété DataSourceMode du SqlDataSource est
configuré par default en DataSet mais je ne sais pas si il y a moyen accéder
à ce DataSet directement.

Jay

"nima84" wrote in message
news:
bonjour à tous;
voila,j'ai deux gridviews et je voudrai pouvoir en clickant sur un boutton
parcourir le premier ligne par ligne et verifier pour chaque ligne si elle
existe dans le deuwieme gridview,si elle n'existe pas je l'insere dans mon
deuxieme gridview,le test d'existance je le fais sur les identifiants de
chaque gridviews
pour etre plus claire voila mon code pour ce boutton :





protected void Button1_Click(object sender, EventArgs e)
{
int j = 0;

for (int i = 0; i <= GridView1.Rows.Count; i++)
{
do
{
j++;
}
while ((j != GridView2.Rows.Count) &&
(GridView1.Rows[i].Cells[1].Text != GridView2.Rows[j].Cells[1].Text));

if (j == GridView2.Rows.Count)
{
Label1.Text = GridView1.Rows[i].Cells[1].Text;
SqlDataSource2.Insert();
}






à chaque fois que je lance l'execution j'ai l'erreur suivante : "Index was
out of range. Must be non-negative and less than the size of the
collection.
Parameter name: index "
si quelqu'un pouvait m'aidé afin que ça marche je lui serai trés
reconnaissante
merci pour tout d'avance
respectueusement ,
nima84



Avatar
nima84
bonsoire,
encor merci de m'avoir repondu c'est trés gentil de votre part,mais je vais
encor vous derrangé encor un peu si possible :-P
voila j'ai appliqué ce que vous m'aviez dit et avec des petits changement ça
a fonctionné, mais apres j'ai remarqué que le test de la deuxieme boucl for
n'etait pas le bon

for(int j=0; i<GridView2.Rows.Count;j++) /*normalement puisque c'est le deuxieme grid view c'est l'indexe "j" que je teste */





















donc je l'ai changé ; et apres au niveau du dernier test if

Label1.Text=GridView2.Rows [i] .Cells[1].Text; /*normalement c'est "j"*/





















j'ai aussi changé ll'indexe ; mais le hic est que la ça ne marche plus et à
chaque fois que j'exécute ça me donne cette erreur : "Index was out of range.
Must be non-negative and less than the size of the collection.
Parameter name: index "
j'ai esseillé de remettre comme avant mais rien n'y fait ça ne marche
toujours pas et ça me donne toujours la meme erreur ,
je c'est pas si ça a une relation ou si l'origine de l'erreur est autre !!
s'il vous plait vous ne saurriez pas ce qu'il faut faire pour arrangé ça
je ne comprend pas la signification de cette erreur!
je vous remerci d'avance de toutes vos informations je vous suis
reconnaissante
respectueusement ,
nima84
Avatar
nima84
bonsoire,
encor merci de m'avoir repondu c'est trés gentil de votre part,mais je vais
encor vous derrangé encor un peu si possible :-P
voila j'ai appliqué ce que vous m'aviez dit et avec des petits changement ça
a fonctionné, mais apres j'ai remarqué que le test de la deuxieme boucl for
n'etait pas le bon

for(int j=0; i<GridView2.Rows.Count;j++) /*normalement puisque c'est le deuxieme grid view c'est l'indexe "j" que je teste */





















donc je l'ai changé ; et apres au niveau du dernier test if

Label1.Text=GridView2.Rows [i] .Cells[1].Text; /*normalement c'est "j"*/





















j'ai aussi changé ll'indexe ; mais le hic est que la ça ne marche plus et à
chaque fois que j'exécute ça me donne cette erreur : "Index was out of range.
Must be non-negative and less than the size of the collection.
Parameter name: index "
j'ai esseillé de remettre comme avant mais rien n'y fait ça ne marche
toujours pas et ça me donne toujours la meme erreur ,
je c'est pas si ça a une relation ou si l'origine de l'erreur est autre !!
s'il vous plait vous ne saurriez pas ce qu'il faut faire pour arrangé ça
je ne comprend pas la signification de cette erreur!
je vous remerci d'avance de toutes vos informations je vous suis
reconnaissante
respectueusement ,
nima84
Avatar
Jay
Afin d'éviter des erreurs de type "Index was out of range...", utilise des
boucles foreach:
ex:
foreach(GridViewRow gvr1 in GridView1.Rows)
{
bool trouveúlse;
foreach(GridViewRow gvr2 in GridView2.Rows)
{
if(gvr1.Cells[1].Text==gvr2.Cells[1].Text)
{
trouve=true;
break;
}
}
if(!trouve)
{
//Insérer dans le row de la gridview1 dans la 2 si pas trouvé en
supposant que Label1 est le control d'entrée liée à votre SqlDataSource2
pour la commande d'insert
Label1.Text=gvr1.Cells[1].Text;
SqlDataSource2.Insert();
}
}

Bien à vous,
Jay

"nima84" wrote in message
news:
bonsoire,
encor merci de m'avoir repondu c'est trés gentil de votre part,mais je
vais
encor vous derrangé encor un peu si possible :-P
voila j'ai appliqué ce que vous m'aviez dit et avec des petits changement
ça
a fonctionné, mais apres j'ai remarqué que le test de la deuxieme boucl
for
n'etait pas le bon

for(int j=0; i<GridView2.Rows.Count;j++) /*normalement
puisque c'est le deuxieme grid view c'est l'indexe "j" que je
teste */





















donc je l'ai changé ; et apres au niveau du dernier test if

Label1.Text=GridView2.Rows [i] .Cells[1].Text;
/*normalement c'est "j"*/





















j'ai aussi changé ll'indexe ; mais le hic est que la ça ne marche plus et
à
chaque fois que j'exécute ça me donne cette erreur : "Index was out of
range.
Must be non-negative and less than the size of the collection.
Parameter name: index "
j'ai esseillé de remettre comme avant mais rien n'y fait ça ne marche
toujours pas et ça me donne toujours la meme erreur ,
je c'est pas si ça a une relation ou si l'origine de l'erreur est autre !!
s'il vous plait vous ne saurriez pas ce qu'il faut faire pour arrangé ça
je ne comprend pas la signification de cette erreur!
je vous remerci d'avance de toutes vos informations je vous suis
reconnaissante
respectueusement ,
nima84







Avatar
Jay
Afin d'éviter des erreurs de type "Index was out of range...", utilise des
boucles foreach:
ex:
foreach(GridViewRow gvr1 in GridView1.Rows)
{
bool trouveúlse;
foreach(GridViewRow gvr2 in GridView2.Rows)
{
if(gvr1.Cells[1].Text==gvr2.Cells[1].Text)
{
trouve=true;
break;
}
}
if(!trouve)
{
//Insérer dans le row de la gridview1 dans la 2 si pas trouvé en
supposant que Label1 est le control d'entrée liée à votre SqlDataSource2
pour la commande d'insert
Label1.Text=gvr1.Cells[1].Text;
SqlDataSource2.Insert();
}
}

Bien à vous,
Jay

"nima84" wrote in message
news:
bonsoire,
encor merci de m'avoir repondu c'est trés gentil de votre part,mais je
vais
encor vous derrangé encor un peu si possible :-P
voila j'ai appliqué ce que vous m'aviez dit et avec des petits changement
ça
a fonctionné, mais apres j'ai remarqué que le test de la deuxieme boucl
for
n'etait pas le bon

for(int j=0; i<GridView2.Rows.Count;j++) /*normalement
puisque c'est le deuxieme grid view c'est l'indexe "j" que je
teste */





















donc je l'ai changé ; et apres au niveau du dernier test if

Label1.Text=GridView2.Rows [i] .Cells[1].Text;
/*normalement c'est "j"*/





















j'ai aussi changé ll'indexe ; mais le hic est que la ça ne marche plus et
à
chaque fois que j'exécute ça me donne cette erreur : "Index was out of
range.
Must be non-negative and less than the size of the collection.
Parameter name: index "
j'ai esseillé de remettre comme avant mais rien n'y fait ça ne marche
toujours pas et ça me donne toujours la meme erreur ,
je c'est pas si ça a une relation ou si l'origine de l'erreur est autre !!
s'il vous plait vous ne saurriez pas ce qu'il faut faire pour arrangé ça
je ne comprend pas la signification de cette erreur!
je vous remerci d'avance de toutes vos informations je vous suis
reconnaissante
respectueusement ,
nima84