2016-10-31 3 views
0

Я пытаюсь получить данные из базы данных, я использую ado.net. Я использую учебник, и он работает с другой страницей, содержит связь между двумя классами. Но с этим я сталкиваюсь с проблемой получения всех данных, и у меня уже есть данные в базе данных. это мой код:Ошибка Отображение данных asp.net WebForms

private void PopulateClients() 
    { 
     List<Client> allClients = null; 
     using (MyDataBaseEntities dc = new MyDataBaseEntities()) 
     { 
      var clients = (from a in dc.Clients 
           select new 
           { 
            a 
           }); 
      if (clients != null) 
      { 
       allClients = new List<Client>(); 
      } 

      if (allClients == null || allClients.Count == 0) 
      { 
       //trick to show footer when there is no data in the gridview 
       allClients.Add(new Client()); 
       myGridview.DataSource = allClients; 
       myGridview.DataBind(); 
       myGridview.Rows[0].Visible = false; 
      } 
      else 
      { 
       myGridview.DataSource = allClients; 
       myGridview.DataBind(); 
      } 
     } 
    } 

Я вижу эту tutorial

Solution

private void PopulateClients() 
    { 
     List<Client> allClients = null; 
     using (MyDataBaseEntities dc = new MyDataBaseEntities()) 
     { 
      var clients = (from a in dc.Clients 
           select new 
           { 
            a 
           }); 
      if (clients != null) 
      { 
       allClients = new List<Client>(); 
       foreach (var i in clients) 
       { 
        allClients.Add(i.a); 
       } 
      } 

      if (allClients == null || allClients.Count == 0) 
      { 
       //trick to show footer when there is no data in the gridview 
       allClients.Add(new Client()); 
       myGridview.DataSource = allClients; 
       myGridview.DataBind(); 
       myGridview.Rows[0].Visible = false; 
      } 
      else 
      { 
       myGridview.DataSource = allClients; 
       myGridview.DataBind(); 
      } 
     } 
    } 

ответ

1

Вы не получаете никаких данных, потому что вы не используете данные fecthed из запроса (которые находятся внутри IEnumerable<Clients> clients).
Вы только что отметили, что clients отличается от нуля, а затем вы создаете еще один istance of List<Clients> и в конце концов вы связываете allClients, что он явно пуст.

  var clients = (from a in dc.Clients 
           select new 
           { 
            a 
           }).ToList(); 
      if (clients != null && clients.Any()) 
      { 
       myGridview.DataSource = clients; 
       myGridview.DataBind(); 
       myGridview.Rows[0].Visible = false; 
      } 
      else 
      { 
       myGridview.DataSource = clients; 
       myGridview.DataBind(); 
      } 
+0

Я получаю это исключение детали: System.NotSupportedException: Привязка данных непосредственно к магазину запроса (DbSet, DbQuery, DbSqlQuery, DbRawSqlQuery) не поддерживается. Вместо этого запишите DbSet с данными, например, вызвав Load на DbSet, а затем привяжите к локальным данным. Для привязки WPF к DbSet.Local. Для WinForms привязка к DbSet.Local.ToBindingList(). Для ASP.NET WebForms вы можете привязываться к результату вызова ToList() в запросе или использовать привязку модели, для получения дополнительной информации см. Http://go.microsoft.com/fwlink/?LinkId=389592. – Juste3alfaz

+0

Исправлено, теперь он должен работать. Errpr был причиной для клиентов, которые по умолчанию были «IEnumerable ', а не 'List ' – Tinwor

+0

thnx много, Моя проблема в том, что вы пишете «не используйте данные, связанные с запросом» – Juste3alfaz