2013-06-27 4 views
5

Bitte helfen Sie mir aus, dies zu lösen ... Ich bekomme Fehler als "es gibt keine Zeile an Position 0", "Index außerhalb des Bereichs Ausnahme wurde nicht übergeben von Benutzercode“Fehler erhalten "Es gibt keine Zeile an Position 0"

Unten ist mein Code

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

Nun, die Nachricht ist ziemlich klar, oder? Was verstehst du nicht? Wenn 'rep.Tables [0]' keine Zeilen enthält, löst der Zugriff auf 'Rows [0]' eine Ausnahme aus. –

+0

Überprüfen Sie, ob Zeilen in der Tabelle vorhanden sind, bevor Sie versuchen, sie zu verwenden! –

+1

** Debug ** und ** Watch ** –

Antwort

9

Sie sind nicht zu überprüfen, ob Ihre Tabellen Inhalte bekommen haben. Die Botschaft ist klar - es gibt keine Zeile an Position 0. Es wird wohl auf dieser Linie geworfen, oder man folgt vor:

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

Sie überprüfen sollten, dass es Zeilen, bevor Sie Daten von ihnen zu erhalten. Etwas wie (überprüfen Sie die Syntax, bevor Sie dies verwenden - das ist überhaupt nicht getestet):

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

das hat gut funktioniert ... danke ... aber meine Rasteransicht Zeile Daten isnt Anzeige in einer anderen Seite .. bekommen nur leere Etiketten – Suraj

0

Bevor Sie auf etwas zugreifen immer zuerst nach Elementen zuerst. Nachdem Sie das getan haben, und wenn dies immer noch auftritt, überprüfen Sie die Spaltennamen sind sie genau? Zum Beispiel ist "TaskID" wirklich "TaskId" und die Indizierung schlägt fehl? Sind diese Artikel schließlich nullfähig? Wenn dies der Fall ist, ist das Aufrufen eines ToString() in einem Nullfeld nicht das, was Sie wollen.

4

Der frühere Ratschlag ist alles gut und Sie sollten folgen.

Allerdings sieht es für mich klar, dass der Grund, keine Zeile an Position gibt es 0 ist, dass Sie am falschen Tisch suchen. Ich bezweifle ernsthaft, dass Sie eine ID in einer Tabelle haben, einen Namen in einer anderen haben usw., aber Sie indexieren für jede Dateneinheit eine andere Tabelle.

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

sollten alle

sein nur
rep.Tables[0] 

Sie sicherlich eine Tabelle, aber am Tisch 0 durch Tabelle 6 suchen!

+0

thnks Mate ... Spot auf – Suraj

Verwandte Themen