Показать подробности в элементе управления Repeater с использованием Entity Framework (подход кода сначала) в веб-формах asp.net - PullRequest
1 голос
/ 17 марта 2019

Как я могу получить данные для веб-формы ASp.net, используя первый подход Entity Framework Code

Мне нужно показать список сотрудников из таблицы Emp на странице Emp.aspx, используя элемент управления reapeter

Я новичок в EF и пытаюсь изучить EF для веб-форм asp.net

На данный момент я создал следующую папку App_Code

App_Code
    DBClass
        Dept.cs
        Emp.cs
        EmployeeDBContent.cs
        EmpRepository.cs

Код для всех файлов

Dept.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    /// <summary>
    /// Summary description for Dept
    /// </summary>
 namespace empNS
{   
public class Dept
    {
        //Scalar properties
        public int Id { get; set; }
        public string Name { get; set; }
        public string Location { get; set; }
        //Navigation Property
        public List<Emp> Emp { get; set; }
    }
}

Emp.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    /// <summary>
    /// Summary description for EmpRepository
    /// </summary>
namespace empNS
{
    public class EmpRepository
    {
        public List<Dept> GetDepartments()
        {
            EmployeeDBContext empDBContext = new EmployeeDBContext();
            return empDBContext.Dept.ToList();
        }
    }
}

EmployeeDBContext.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.Entity;

    /// <summary>
    /// Summary description for EmployeeDBContext
    /// </summary>
namespace empNS
{
    public class EmployeeDBContext: DbContext
    {
        public DbSet<Dept> Dept { get; set; }
        public DbSet<Emp> Emp { get; set; }

    }
}

EmpRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for EmpRepository
/// </summary>

namespace empNS { открытый класс EmpRepository { публичный статический список GetEmployees () { EmployeeDBContext empDBContext = new EmployeeDBContext (); return empDBContext.Emp.ToList (); } }

}

Я не уверен, как я могу показать список empployee на странице Emp.aspx, используя управление повторителем

Код Emp.aspx

 <h1>Employee List</h1>
        <asp:Repeater ID="empList" runat="server">
            <ItemTemplate>
                <tr>
                    <td><%#Eval("ID") %></td>
                    <td><%#Eval("FirstName") %></td>
                    <td><%#Eval("LastName") %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </div>

CodeBehind

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
namespace empNS
{
    public partial class Emp : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //UPDATED CODE
        rptEmpList.DataSource = EmpRepository.GetEmployees();
        rptEmpList.DataBind();
        }
    }
}

Как вызвать функцию GetDepartments() из EmpRepository.cs, чтобы отобразить список сотрудников в управлении ретранслятором.

Я совершенно новичок в этом и не смог найти простой пример, который может связать управление ретранслятором с использованием подхода «сначала код» для отображения информации. Любая помощь или указатель на учебник будут полезны.

1 Ответ

2 голосов
/ 17 марта 2019

Вы можете привязать List непосредственно к повторителю.Просто убедитесь, что вы указали на правильное пространство имен.

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack == false)
    {
        empList.DataSource = EmpRepository.GetDepartments();
        empList.DataBind();
    }
}

И так как вы привязываете класс к Repeater, легче сделать его строго типизированным.Тогда вы можете получить доступ к свойствам напрямую.

<asp:Repeater ID="empList" runat="server" ItemType="YourNameSpace.Dept">
    <ItemTemplate>
        <tr>
            <td><%# Item.ID %></td>
            <td><%# Item.FirstName %></td>
            <td><%# Item.LastName  %></td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

Но, похоже, сотрудники являются собственностью департамента.Поэтому, если вы хотите, чтобы те, кто вам нужен, должны использовать вложенный Повторитель, зациклить все отделы, чтобы получить сотрудников, или выбрать отдел для Повторителя.*

empList.DataSource = EmpRepository.GetDepartments()[0].Emp;

Вложенный репитер

<asp:Repeater ID="empList" runat="server" ItemType="YourNameSpace.Dept">
    <ItemTemplate>
        <tr>
            <asp:Repeater ID="empListNested" runat="server" ItemType="YourNameSpace.Dept.Emp" DataSource='<%# Item.Emp %>'>
                <ItemTemplate>
                    <tr>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
        </tr>
    </ItemTemplate>
</asp:Repeater>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...