2013-06-27 49 views
5

lütfen bunu çözmeme yardım edin ... "Konum 0'da hiç satır yok" şeklinde hata alıyorum, "aralık dışı istisnası dizini tarafından geçersiz kılındı" kullanıcı kodu"Hata alma "0 konumunda bir satır yok"

Aşağıda benim kod

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

Eh, mesaj oldukça açık, değil mi? Ne anlamadın? Rep.Tables [0] 'herhangi bir satır içermiyorsa, 'Satırlar [0]' seçeneğine erişmek bir istisna atar. –

+0

Kullanmaya çalışmadan önce tabloda herhangi bir satır olup olmadığını kontrol edin! –

+1

** Hata ayıklama ** ve ** İzle ** –

cevap

9

senin tablolar herhangi bir içerik var eğer kontrol etmiyor olmamız. Mesaj açıktır - 0 konumunda hiçbir satır Muhtemelen bu hat üzerinde atılmış veya kimse şu ediliyor vardır: Sen onlardan veri almak için denemeden önce satırı olduğunu kontrol etmelidir

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

. gibi bir şey (Bunu kullanmadan önce sözdizimi doğrulamak - bu hiç test değildir):

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

bu iyi çalıştı ... teşekkürler ... ama benim ızgara görünümü satır veri anoher sayfa görüntüleniyor .. alma sadece boş etiketleri – Suraj

0

her zaman ilk öğeleri kontrol şeyi erişmeden önce. Bunu yaptıktan sonra ve hala devam ederse sütun isimlerini kontrol edin? Örneğin "TaskID" gerçekten "TaskId" ve bu endeksleme başarısız oluyor? Son olarak bu öğeler null olabilir mi? Eğer bir boş alan üzerinde bir ToString() çağırıyorsanız, istediğiniz gibi değil.

4

Önceki tavsiyenin hepsi iyi ve onu izlemelisiniz.

Ancak 0 konumunda satır olduğundan nedeni yanlış masaya bakıyor olmasıdır bana bariz görünüyor. Bir tabloda, başka bir isimde, vs. kimliğiniz olduğundan şüphe ettim, ancak her bir veri parçası için farklı bir tabloya indeksleme yapıyorsunuz.

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

tüm Mutlaka tek tablo var, ama masanın 6 aracılığıyla masaya 0 bakıyoruz

rep.Tables[0] 

olmalı!

+0

thnks arkadaşı ... spot – Suraj

İlgili konular