Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme de rechargement de une table dans une page [ Archives ASP & ASP.NET / ASP.net ] (gama71)

mardi 23 août 2005 à 18:43:19 | Probleme de rechargement de une table dans une page

gama71

Bonjour , j'ai un probleme avec des éléments dans une table, il s'agit d'un htmlinputimage
qui me permet lorsque l'on clique dessus d'aller cher toute sles caractétistiques du produit.
Quand je démarre la page se charge normalement avec X record dans la table.
Je change de catégorie et j'ai Y record qui s'affichent, mais lorsque je clique sur le premier record de la catégorie, il me donne les caractéristique de la x+1 image. Au lieu de la première.
Le processus se passe ainsi
Page Load
clique button catégorie = traitement évènement "Click" + pageload pour afficher les record de la catégorie sélectionnée
Je clique alors sur l'image qui m'intérresse
de nouveau
Page Load
traitement "ServerClick" qui estcensé me renvoyer dans la page affichant les détails.

Le probleme est que si j'ai 3 record, je change de catégorie, j'en ai alors 10, je sélectionne le premier et il me renvoie les infos du 4èmé.
J'en conclu que le serveur a perdu les pédales, que lors du changement de catégorie, il a effectivement changer l'affichage mais n'a pas noté que la table a été vidée, le résultat est qu'il additionne des records, comme si il avais toujours les records de la première catégorie, son index est inchangé bien qu'a l'affichage tout soit correcte.

voici le code de mon page load qui fait le remplissage de la table, que faire de plus ?

try

{

//oleDbConnection1.Open();

aConnection.Open();

//create the datareader object to connect to table

OleDbCommand aCommand = new OleDbCommand(cmdsql, aConnection);

OleDbDataReader aReader = aCommand.ExecuteReader();

//Iterate throuth the database

int cptrecord =0;

string [] IDItem= new string [10];

string [] TitreFr=new string [10];

string [] DescrFR=new string [10];

string [] Promo=new string [10];

string [] PrixVente=new string [10];

string [] PrixAchat=new string [10];

string [] LocImage=new string [10];

string [] Langues = new string[10];

string [] Precom = new string[10];

string [] DateDispo = new string[10];

DescrFR.Initialize();

if (ip!=0)

{

for (int ff=0; ff<ip;ff++)

{

for (int jj=0;jj<10;jj++)

{

aReader.Read();

}

}

}

while(aReader.Read()&&(cptrecord<10))

{

IDItem[cptrecord] = aReader.GetInt32(0).ToString();

TitreFr[cptrecord] = aReader.GetString(1);

DescrFR[cptrecord] = aReader.GetString(2);

//if (nom=="") nom=" ";

Promo[cptrecord] = (aReader.GetBoolean(3).ToString());

//if (prenom=="") prenom=" ";

PrixVente[cptrecord] = (aReader.GetFloat(4).ToString());

//if (adresse=="") adresse=" ";

PrixAchat[cptrecord] = (aReader.GetFloat(5).ToString());

//if (ville=="") ville=" ";

LocImage[cptrecord] = (aReader.GetString(6));

TableRow r = new TableRow();

TableCell c = new TableCell();

cptrecord++;

}

if (cptrecord>0)

{

double MontantTotal = 0;

TableItems.Rows.Clear();

TableRow h = new TableRow();

//string tempcount = Session.Contents[5].ToString();

//string [] tempcontent = (string []) Session.Contents[6];

TableHeaderCell myheader1 = new TableHeaderCell();

TableHeaderCell myheader2 = new TableHeaderCell();

TableHeaderCell myheader3 = new TableHeaderCell();

TableHeaderCell myheader4 = new TableHeaderCell();

myheader1.BorderColor = System.Drawing.Color.Black;

myheader1.BorderWidth = 2;

myheader1.ForeColor = myheader2.ForeColor= myheader3.ForeColor = myheader4.ForeColor = System.Drawing.Color.DarkBlue;

myheader1.Font.Bold = true;

myheader1.Text = "Titre";

myheader1.Width = Unit.Point(100);

/*myheader2.BorderColor = System.Drawing.Color.Black;

myheader2.BorderWidth = 2;

myheader2.Text = "Description";

myheader2.Font.Bold = true;

myheader2.Width = Unit.Point(150);*/

myheader3.BorderColor = System.Drawing.Color.Black;

myheader3.BorderWidth = 2;

myheader3.Font.Bold = true;

myheader3.Width = Unit.Point(75);

myheader3.Text = "Pochette";

myheader4.BorderColor = System.Drawing.Color.Black;

myheader4.BorderWidth = 2;

myheader4.Font.Bold = true;

myheader4.Width = Unit.Point(40);

myheader4.Text = "Prix TVAC";

myheader1.HorizontalAlign = HorizontalAlign.Left;

myheader2.HorizontalAlign = HorizontalAlign.Left;

myheader3.HorizontalAlign = HorizontalAlign.Left;

myheader4.HorizontalAlign = HorizontalAlign.Left;

h.Cells.Add(myheader1);

//h.Cells.Add(myheader2);

h.Cells.Add(myheader3);

h.Cells.Add(myheader4);

TableItems.Rows.Add(h);

TableRow r;

TableCell c ;

TableCell d ;

TableCell efield ;

TableCell p ;

TableCell idfield;

for (int i = 0;i<cptrecord;i++)

{

r = new TableRow();

c = new TableCell();

d = new TableCell();

efield = new TableCell();

p = new TableCell();

idfield = new TableCell();

TableItems.Font.Size = FontUnit.XSmall;

efield.ForeColor = d.ForeColor = c.ForeColor = System.Drawing.Color.DarkBlue;

p.ForeColor = System.Drawing.Color.Red;

c.BorderColor = System.Drawing.Color.Black;

c.BorderWidth = 1;

c.Wrap = true;

c.Width = Unit.Point(250);

c.Controls.Add(new LiteralControl(TitreFr[i]));

/*d.BorderColor = System.Drawing.Color.Black;

d.BorderWidth = 1;

d.Width = Unit.Point(150);

d.Controls.Add(new LiteralControl(DescrFR[i]));*/

efield.BorderColor = System.Drawing.Color.Black;

efield.BorderWidth = 1;

efield.Width = Unit.Point(80);

efield.VerticalAlign = VerticalAlign.Middle;

efield.HorizontalAlign = HorizontalAlign.Right;

/*double PrixUnitaire = GetPriceForItem(tempcontent[i].Substring(2));

double subtotal = PrixUnitaire * (int.Parse(tempcontent[i].Substring(0,1)));

MontantTotal += (PrixUnitaire * (int.Parse(tempcontent[i].Substring(0,1))));*/

//efield.Text = string.Format("{0:###0.00}",decimal.Parse(subtotal.ToString()));

HtmlInputImage myimage = new HtmlInputImage();

myimage.Src = LocImage[i];

myimage.Style.Add("height","40");

myimage.Style.Add("width","30");

myimage.Style.Add("runat","server");

myimage.Value = IDItem[i];

myimage.CausesValidation=true;

myimage.ServerClick +=new ImageClickEventHandler(myimage_ServerClick);

/* ImageButton tmpbutton = new ImageButton();

tmpbutton.ImageUrl=LocImage[i];

tmpbutton.Height = Unit.Point(80);

tmpbutton.Width =Unit.Point(56);

tmpbutton.Click += new ImageClickEventHandler(tmpbutton_Click);

tmpbutton.Attributes.Add("idrecord",IDItem[i]);*/

//efield.Controls.Add(tmpbutton);

efield.Controls.Clear();

efield.Controls.Add(myimage);

p.BorderColor = System.Drawing.Color.Black;

p.BorderWidth = 1;

p.Wrap = true;

p.Width = Unit.Point(40);

p.Controls.Add(new LiteralControl(PrixVente[i]+ " €"));

idfield.BorderColor = System.Drawing.Color.Black;

idfield.BorderWidth = 1;

idfield.Wrap = true;

idfield.Width = Unit.Point(25);

idfield.Controls.Add(new LiteralControl(IDItem[i]));

r.Cells.Add(c);

//r.Cells.Add(d);

r.Cells.Add(efield);

r.Cells.Add(p);

r.Cells.Add(idfield);

TableItems.Rows.Add(r);

}

}

else

{

TableItems.Rows.Clear();

Button1.Visible=Button2.Visible=false;

}

aReader.Close();

aConnection.Close();

}

catch (Exception erro)

{

int i =0;

i++;

}




jeudi 25 août 2005 à 17:34:43 | Re : Probleme de rechargement de une table dans une page

gama71

N'ayant pas de réponse, j'ai du me résoudre à supprimer ma tabel et a la remplacer par 10 panel
contenant des textbox et imagebutton que je charge de la meme manière que ma table et dans ce cas les
button me renvoie bien vers les données que j'attend.

Je suppose que le fait de charger dynamiquement la table et de créer dynamiquement les Eventhandler associés aux
HTMLImageButton perturbe le serveur. ils ne vois pas que les éléments ne sont plus les meme ou que les Eventhanlder générer ne sont pas supprimés et recréés.
Bref pour moi il y a un bug

vendredi 26 août 2005 à 21:24:40 | Re : Probleme de rechargement de une table dans une page

gama71

Réponse acceptée !
Voila j'ai obtenu la réponse grace à un collègue
Le problème est qu'il faut absolument assigné la propiété ID des objets qui sont ajouté dynamiquement dan sla table , en l'occurence les HTMLImageButton,
de sorte que le serveur puisse les identifier. Comme le chamsp id  était le meme pour tous , il ne faisiat pas vraiment la différence et quand je cliquait sur un bouton , il se mélangeait les pinceaux.

 Donc dans  le code plus haut , il suffit d'ajouter une ligne pour que lorsuqe l'on clique sur l'image , il traite les bonnes informations dans
le Click :


HtmlInputImage myimage = new
HtmlInputImage();

myimage.Src = LocImage[i];

myimage.Style.Add("height","40");

myimage.Style.Add("width","30");

myimage.Style.Add("runat","server");

myimage.Value = IDItem[i];

myimage.CausesValidation=true;

myimage.ID = "HtmlImgBton"+IDItem[i]; //IDItem[i] = clé de la db identifiant l'article dans la db

myimage.ServerClick +=
new ImageClickEventHandler(myimage_ServerClick);

efield.Controls.Add(myimage);
....

private void myimage_ServerClick(object sender, ImageClickEventArgs e)

{

HtmlInputImage tmpimage = (HtmlInputImage) sender;

if (Session.Count<5)

Session.Add("CurrentItem",tmpimage.Value);

else

Session.Contents[4] = tmpimage.Value;

Response.Redirect("ItemsUpdate.aspx",true);

}




Cette discussion est classé dans : string, system, add, tablecell, efield


Répondre à ce message

Sujets en rapport avec ce message

copie de fichiers [ par romain3395 ] Bonjour,Je cherche a uploader des fichiers d'un client vers mon serveur en utilisant la méthode System.IO.File.Copy:try{ System.IO.File.Copy(logo_roug webservice pb d'accès aux fichier se trouvant sur un autre serveur [ par maisonx2000 ] Voila je veux developper un webservice qui me retourne un fichier texte se trouvant sur un autre serveurj'ai tous les droit d'accès. Voici le codeDim Table et controles sever dynamique [ par papiseckfr ] bonjour,j'ai un probleme, en fait je génére un tableau dhtml dynamique et je le rempli de controle (dropdownlist label, inputext ...) cependant chaque ASP.NET : Copie de ressources intégrées. [ par DeathAngel ] Bonjour à toutes et à tous,J'ai un petit soucis de copie de fichier.J'ai un Ascx, qui utilise des images (ressource intégrée).Lors de l'initialisation Récupérer une valeur d'un Control User acsx dans un Label [ par ryckbosch ] Bonjour,Je ne sais pas si j'utilise correctement le passage des variables entre un Control User (Nbre_Sites.ascx) et la page qui l'appelle (Test.aspx) gros souci avec vs2005 [ par yohan49 ] salut les garsj'ai un souci de deploiment de ma page aspj'ai installer ma page sur mon pc avec iis , le serveur marche seulement quand je demande a ie Requete dans base SQL avec des DropDownList pour faire une recherche [ par billmax ] Bonjour,==========MON PROBLEMEje veux faire une selection de tuple de ma base en fonction de critere grace a des DropDownList==========je suis etudian [ASP2] Problème WebControl et affichage dans le Designer [ par smoitry ] Bonjour,J'ai un problème que je n'arrive pas à résoudre depuis 3 jours : j'ai créé un WebControl dont le but est de m'afficher un cadre dans la page c Miniatures d'img (bisi-bis), Nurgle si T là ! [ par yous ] Je souhaite gérer des miniatures d'images pour optmiser les temps de téléchargement. Je travaille en .Net 1.1.Nurgle m'est déjà


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.