2017-07-23 3 views
0

Je reçois l'erreur suivante lorsque je clique sur le bouton de connexion:System.IndexOutOfRangeException: Il n'y a pas de ligne à la position 0

Il n'y a pas de ligne à la position 0

Plus précisément de la Image3.ImageUrl = HDT.Rows[0]["image"].ToString(); ligne.

Voici l'instantané db de la Société Tableau:

Table-Society Snapshot

La ligne est null pas clairement, alors quelle est l'erreur au sujet? Quelle est la position 0 exactement

Voici le bloc de code où je reçois l'erreur:

DS_HOUSE.HOUSE_SELECTDataTable HDT = new DS_HOUSE.HOUSE_SELECTDataTable(); 
DS_HOUSETableAdapters.HOUSE_SELECTTableAdapter HAdapter = new 
DS_HOUSETableAdapters.HOUSE_SELECTTableAdapter(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    UDT = UAdapter.Select_By_UID(Convert.ToInt32(Session["uid"].ToString())); 
    HDT = HAdapter.Select_By_SNAME_BLOCKNO(UDT.Rows[0]["societyname"].ToString(), Convert.ToInt32(UDT.Rows[0]["Houseid"].ToString())); 
    Image3.ImageUrl = HDT.Rows[0]["image"].ToString(); 
    lblsname.Text = HDT.Rows[0]["sname"].ToString(); 
    lblbno.Text = HDT.Rows[0]["blockno"].ToString(); 
    lbltype.Text = HDT.Rows[0]["type"].ToString(); 
    ViewState["HID"] = HDT.Rows[0]["HID"].ToString(); 
} 

i a également essayé de mettre le code dans le cas bloc avec

 protected void Page_Load(object sender, EventArgs e) 
    { 
     if (HDT.Rows.Count > 0) 
    { 
     lblsell.Text = ""; 
     UDT = UAdapter.Select_By_UID(Convert.ToInt32(Session["uid"].ToString())); 
     HDT = HAdapter.Select_By_SNAME_BLOCKNO(UDT.Rows[0]["societyname"].ToString(), Convert.ToInt32(UDT.Rows[0]["Houseid"].ToString())); 

     { 
      Image3.ImageUrl = HDT.Rows[0]["image"].ToString(); 
      lblsname.Text = HDT.Rows[0]["sname"].ToString(); 
      lblbno.Text = HDT.Rows[0]["blockno"].ToString(); 
      lbltype.Text = HDT.Rows[0]["type"].ToString(); 
      ViewState["HID"] = HDT.Rows[0]["HID"].ToString(); 
     } 
    } 
} 

j'ai pu ouvrir une session Cependant, je n'ai pas pu récupérer les détails de la table de la société.

Snapshot of Society details not being retrieved

+0

"Qu'est-ce que la position 0 exactement?" - C'est la première rangée, dont vous êtes de 'HDT'. Notez que la recherche de 'HDT.Rows.Count' * avant * le remplissage de' HDT' est étrange, et n'aidera pas quand 'HAdapter.Select_By_SNAME_BLOCKNO' retournera une table vide. (Vous ne savez pas non plus pourquoi vous avez un bloc supplémentaire dans ce second exemple de code.) –

+0

Que faire si la requête ** renvoie un ensemble vide? –

+0

'UDT.Rows [0] [" societyname "]' jette encore des exceptions si 'UDT.Rows.Count == 0' – jAC

Répondre

0

Placez un point d'arrêt sur la ligne et debug suivante:

Image3.ImageUrl = HDT.Rows[0]["image"].ToString(); 

Ensuite, voir la valeur de HDT en montre rapide, lorsque coups au-dessus de la ligne des points d'arrêt.

En outre, le contrôle si if (HDT.Rows.Count > 0) doit être placé juste au-dessus Image3.ImageUrl = HDT.Rows[0]["image"].ToString();

Après la HDT se peuplé, ce qui est.

Il ressemble à HDT lui-même n'est pas rempli.

+0

Comment voyez-vous la valeur exactement? J'ai ajouté le point d'arrêt à cette ligne, mais je suis incapable de voir la valeur grâce à une surveillance rapide – ameyad09

+0

Découvrez cet article MSDN qui se promène dans "Watch": https://msdn.microsoft.com/en-us/library/0taedcee.aspx –

+0

J'ai essayé cela mais je n'arrive toujours pas à le résoudre :( – ameyad09

0

Il ressort de votre description que HDT n'est pas nul, mais HTD.Rows est une collection vide, donc l'élément 0 n'existe pas.

+0

alors quels changements suggérez-vous? – ameyad09