2014-01-16 4 views
0

я создал Linq-на-SQL для зрения SQL Server, теперь я пытаюсь показать запись на взгляд, это сделано :) ноитерация показывает каждую запись несколько раз

  1. проблема заключается в том, что он показывает каждое имя 26 раз, почему?
  2. Как поместить его в gridview вид вещи в MVC?

Контроллер:

namespace EmployeeAttendance_app.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Employee Attendance"; 
      var DataContext = new EmployeeAtdDataContext(); 
      var EmployeeAtd = from emp in DataContext.EmployeeAtds 
         select emp; 
      return View(EmployeeAtd); 
     } 

     } 

Вид:

<ul> 
@foreach (EmployeeAttendance_app.Models.EmployeeAtd emp in (IEnumerable<Object>)ViewData.Model) 
{ 
    <li>@emp.EmplName</li> 
} 
</ul> 

Модель содержит Linq-to-SQL класс с именем EmployeesAtd.

View был создан с помощью этого запроса:

SELECT   
    dbo.HrEmployee.EmplID, dbo.HrEmployee.EmplName, dbo.AtdRecord.RecDate, 
    dbo.AtdRecord.RecTime, dbo.HrDept.DeptName 
FROM    
    dbo.HrDept 
RIGHT OUTER JOIN 
    dbo.HrEmployee ON dbo.HrDept.DeptID = dbo.HrEmployee.DeptID 
LEFT OUTER JOIN 
    dbo.AtdRecord ON dbo.HrEmployee.EmplID = dbo.AtdRecord.EmplID 
+1

Не в вашем случае 'от ого в DataContext.EmployeeAtds выберите EMP,' 'точно так, как DataContext.EmployeeAtds'? В связи с этим вам нужно отбросить в 'IEnumerable ' (а затем неявным образом перевести каждый элемент в 'EmployeeAtd')? Тем не менее, я бы уточнил, что у вас есть в таблице «EmployeeAtd» внутри вашей базы данных ... –

+0

извините, сэр, я не получил первую первую строку? – James

+0

Чтобы расширить предложение Adriano, если вы решительно напечатаете свое мнение, вы сможете сократить код цикла до: @foreach (var emp в ViewData.Model) – SethMW

ответ

0

Кроме очистки вещи Адриано заостренной, я не вижу ничего плохого. Вы сказали, что EmployeeAtds - это представление SQL, верно? Я бы предположил, что у вас есть какое-то соединение, которое дублирует строки.

0
  1. Попробуйте переместить бокс перед тем цикла:

    var emps = (IEnumerable<Object>)ViewData.Model; 
    
    @foreach(EmployeeAttendance_app.Models.EmployeeAtd emp in emps) 
    
  2. Чтобы показать данные в GridView вы должны использовать некоторые яваскрипт LIB. grid controls for ASP.NET MVC?

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