2012-02-14 3 views
2

У меня возникла особая проблема в моем коде ADO.NET. Это данные таблицы, к которым я обращаюсь от ретранслятора от внешнего интерфейса.ADO.NET: данные не отображаются должным образом в ретрансляторе

1 get car cleaned    2012-02-14 08:32:25.643   NULL 
2 submit tax documents  2012-02-14 08:33:04.610   NULL 
3 photo copy all documents 2012-02-14 08:33:04.610   NULL 

Данные в первой строке не отображаются вообще.

Если я удалю строки 2 и 3, данные не будут отображаться в ретрансляторе. Я думаю, что проблема связана с моим кодом ADO.NET. Кроме того, если я полностью обрезаю таблицу, страница загружается навсегда, а не отображается сообщение «Нет данных» в ярлыке.

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtNewTask.Focus(); 
    if (!IsPostBack) 
    { 
     GetTaskList(); 
    } 
} 

protected void GetTaskList() 
{ 

    conn = new SqlConnection(cstr); 
    getTasksCmd = new SqlCommand("select Name, CreationDate, CompletionDate from tasks", conn); 

    try 
    { 
     using (conn) 
     { 
      conn.Open(); 
      using (reader = getTasksCmd.ExecuteReader()) 
      { 
       while (!reader.Read()) 
       { 
        lblDbMsg.Text = "No Data Found!"; 
       } 

       rptTaskList.DataSource = reader; 
       rptTaskList.DataBind(); 

      } 
     } 
    } 

    catch (Exception) 
    { 
     throw; 
    } 
} 

ответ

1

Выньте петлю while из кода:

 using (reader = getTasksCmd.ExecuteReader()) 
     { 
      rptTaskList.DataSource = reader; 
      rptTaskList.DataBind(); 
     } 

Потому что вы звоните SqlDataReader.Read() один раз, вы движетесь мимо первой записи. Поэтому, если вы хотите получить все строки данных, включая первый, не вызывайте вообще Read().

SqlDataReader.Read() Method MSDN Reference

+0

Спасибо, что сработало! – Animesh

+0

@ Кишорнанда Рад помочь! –

Смежные вопросы