2013-06-27 21 views
5

per favore aiutatemi a risolvere questo ... sto ricevendo errore come "non c'è riga nella posizione 0", "l'indice fuori dall'eccezione non è stato gestito da codice utente"Errore "non c'è riga nella posizione 0"

Di seguito è riportato il mio codice

protected void Page_Load(object sender, EventArgs e) 
{ 
    MTMSService obj = new MTMSService(); 
    DBAccess db = new DBAccess(); 
    { 
     MTMSDTO objc = new MTMSDTO(); 
     { 
      objc.TaskID = Convert.ToInt32(Session["TaskID"]); 
      DataSet rep = obj.GetReports(objc); 
      DataView Rprts = new DataView(); 
      Rprts.Table = rep.Tables[0]; 

      LblTaskID.Text = rep.Tables[0].Rows[0]["TaskID"].ToString(); 
      LblTaskName.Text = rep.Tables[1].Rows[0]["TaskName"].ToString(); 
      LblDueDate.Text = rep.Tables[2].Rows[0]["DueDate"].ToString(); 
      LblDescription.Text = rep.Tables[3].Rows[0]["Description"].ToString(); 
      LblAssignBy.Text = rep.Tables[4].Rows[0]["AssignBy"].ToString(); 
      LblStatus.Text = rep.Tables[5].Rows[0]["Status"].ToString(); 
      LblPercentageComplete.Text = 
        rep.Tables[6].Rows[0]["PercentageComplete"].ToString(); 

      LblTaskName.Visible = true; 
      LblAssignBy.Visible = true; 
      LblDescription.Visible = true; 
      LblDueDate.Visible = true; 
      LblStatus.Visible = true; 
      LblPercentageComplete.Visible = true; 
      LblAssignTo.Visible = false; 
     } 
    } 
} 
+0

Bene, il messaggio è abbastanza chiaro, non è vero? Che cosa non capisci? Se 'rep.Tables [0]' non contiene alcuna riga, l'accesso a 'Rows [0]' genera un'eccezione. –

+0

Controlla se ci sono delle righe nella tabella prima di provare ad usarla! –

+1

** Debug ** e ** Watch ** –

risposta

9

non stai controllando se le tabelle hanno avuto alcun contenuto. Il messaggio è chiaro - non v'è alcuna riga alla posizione 0. Probabilmente è stato gettato su questa linea, o una seguendolo:

LblTaskID.Text = rep.Tables[0].Rows[0]["TaskID"].ToString(); 

Si dovrebbe verificare che non vi siano righe prima di tentare di ottenere i dati da loro. Qualcosa di simile (verificare la sintassi prima di utilizzare questo - questo non è testato a tutti):

var table = rep.Tables[0]; 
if (table.Rows.Count > 0){ 
    // Fetch the data... 
} 
else 
{ 
    // Handle missing data in an appropriate way... 
} 
+1

questo ha funzionato bene ... grazie ... ma i miei dati di riga di vista della griglia non viene visualizzato in un'altra pagina .. ottenere solo etichette vuote – Suraj

0

Prima di accedere a qualsiasi cosa controllare sempre per gli oggetti prima. Dopo averlo fatto e se questo si verifica ancora controllare i nomi delle colonne sono esatti? Ad esempio è "TaskID" in realtà "TaskId" e che l'indicizzazione sta fallendo? Infine, questi elementi sono annullabili? Se così chiamare un ToString() su un campo nullo non è quello che vuoi.

4

Il consiglio precedente è tutto buono e dovresti seguirlo.

Tuttavia mi sembra ovvio che il motivo per cui non ci sono righe in posizione 0 è che si sta guardando la tabella sbagliata. Dubito seriamente che tu abbia id in una tabella, nome in un'altra, ecc., Ma stai indicizzando una tabella diversa per ogni pezzo di dati.

rep.Tables[1] 
rep.Tables[2] 
rep.Tables[3] 
rep.Tables[4] 
rep.Tables[5] 
rep.Tables[6] 

dovrebbero essere tutti

rep.Tables[0] 

Sicuramente ha un solo tavolo, ma sta guardando tavolo da 0 a 6 tavolo!

+0

thnks mate ... spot on – Suraj

Problemi correlati