IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] erreur selectetedindex out of range datagrid


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut [C#] erreur selectetedindex out of range datagrid
    salut ,
    voila j<ai un probleme dans mon data grid en voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Server Error in '/WorkSheetProject' Application.
    --------------------------------------------------------------------------------
     
    Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
     
    Exception Details: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
     
    Source Error: 
     
     
    Line 334:
    Line 335:
    Line 336:			string key =  DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    Line 337:			string Comment ;
    Line 338:			DateTime EstimateDate= new DateTime();
    j'ai bien verifie e.Item.ItemIndex prends une valeur qui n'est pas negative (0 , 1 ou 3 selon l'element sur lequel je clique dans le datagrid)
    mais j'ai cette erreur
    alors je ne comprends pas
    j'en profite pour vous demande c a sert a quoi lStack Trace et a quoi sert 'il voila mon stack trace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    [ArgumentOutOfRangeException: Index was out of range.  Must be non-negative and less than the size of the collection.
    Parameter name: index]
       System.Collections.ArrayList.get_Item(Int32 index) +91
       System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
       WorkSheetProject.ProjectFormes.ProjectTargetForm.DataGrid1_UpdateCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\worksheetproject\projectformes\projecttargetform.aspx.cs:336
       System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e)
       System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
       System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       System.Web.UI.Page.ProcessRequestMain()
     
     
     
     
    --------------------------------------------------------------------------------

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    s'il n'est pas négatif c'est qu'il est trop grand, s'il y a 3 éléments à selectionner c'est que l'indice maximum est 2 (0,1,2) et non 3 :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut
    je suis tout a fais d'accoord avec toi il ne passe pas par 3
    c'est plus une erreur de frappe
    je ne sais pas mais j'ai essaye de faire juste ce bout de code tout seul dans un autre projet avec les meme parametre et ca marche
    seulement je n'ai pas envie de tout recommencer alors je en comprends rien
    pkoi ca ne marche pas
    merci a toi

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Met un point d'arrêt sur la ligne 336
    Et Dis-moi les valeurs suivantes en cours:

    * DataGrid1.DataKeys.Count = ?
    et
    * e.Item.ItemIndex = ?
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 94
    Points : 67
    Points
    67
    Par défaut
    J'ai eu un pb similaire,
    l'erreur est déroutante
    car j'avais le
    DataGrid1.DataKeys.Count toujours supérieur au
    e.Item.ItemIndex
    j'ai vérifié plusieurs fois avec le debuggeur...

    le pb venait que la source du datagrid celle avec laquelle tu fait un databind
    a changée et ne correspond plus au schéma initial de l'appel primaire
    dans mon cas je changait la structure du datatable
    dans un appel de méthode qui a eu un leger(?) effet de bord et modifiait l'ordre des colonnes...
    bonne chance..

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Peut-etre il faut voir si un Item n'est pas un Header ou un Footer
    [Code]
    (e.Item.ItemType!=ListItemType.Item) && (e.Item.ItemType!=ListItemType.AlternatingItem)

    on ne fait rien - c'est un Header ou Footer. E n autre cas on fait ce qu'on veut

  7. #7
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut
    salu avous les gars,
    enne effet comme a dis linux neguib , l<index ne deborde pas et il est tout le temps egale a
    0 si je clique sur la premiere ranger
    1 si je suis dans la deuxieme et 2 si je suis dans la troisime

    par contre fais un fill dans mon data set
    dans l'evenement update de mon dta grid
    comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CreatDgAdapter(CurrentProjectID);
     
    			daProject.Fill(ds.ProjectTarget);
     
    			DataGrid1.DataSource=ds.ProjectTarget;
    			DataGrid1.DataMember="ProjectTarget";
    			DataGrid1.DataKeyField="ID";
    voila la focntion creatdgAdapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	private void CreatDgAdapter(int ID)
    		{
     
     
    			daProject.SelectCommand.Parameters.Add(new OleDbParameter("@ID",OleDbType.SmallInt));
    			daProject.SelectCommand.Parameters["@ID"].Value=ID;
     
    		}
    cepenadnt dans le view state je garde la valeur du dernier el;ement selctione (donc le meme PRojectID)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private int CurrentProjectID
    		{
    			get{return Int32.Parse(ViewState["CurrentProjectID"].ToString());}
    			set{ViewState["CurrentProjectID"] = value ;}
    		}
    alors je en sais pas
    je penche plus vers la piste de linux mais je vais voir les autres aussi
    je vous remerci pour vos reponse

  8. #8
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut
    merci a vous,
    fin alment ca marche
    j'ai tous reecris la fonction
    et la ca marche
    je pense que le probleme est du comme disait linux contnenet du dataset qui change peut etre
    mais bon la pour le moment ca marche et je vous remercie tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur subscript out of range dans un tableau
    Par lola06 dans le forum AIX
    Réponses: 1
    Dernier message: 04/09/2013, 11h43
  2. Erreur "vector subscript out of range" - OpenCV
    Par bblanchon dans le forum SL & STL
    Réponses: 3
    Dernier message: 07/06/2012, 13h42
  3. Erreur Python : list index out of range
    Par mmmppp dans le forum Général Python
    Réponses: 4
    Dernier message: 15/10/2011, 21h59
  4. Réponses: 3
    Dernier message: 28/05/2008, 14h31
  5. Réponses: 16
    Dernier message: 12/01/2006, 16h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo