1

我有一个实体对象 student,它具有属性 StudentID 和 StudentName。我有一个部分班级学生,它使用一项服务来查找该学生当前的学校。一个 EntityDataSource 填满了网格就好了,学校接受。如果我观看网格的 RowDataBound 事件,我可以观看它转到 StudentModel.Designer.cs 并获取 StudentID 和 StudentName。但它没有得到学校。这是有道理的,因为学校不是实体对象的一部分 - 但是,我什至可以在使用 EntityDataSource 时获取学校自定义属性吗?

我一直在做一些研究,看来我需要使用 ContextCreating 事件来完成我的对象?

之前,我在 RowDataBound 事件期间添加了学校,但我希望能够对学校进行排序 - 这就是我试图解决这个问题的原因。

我不确定我是否接近解决方案......或者这根本无法完成,我应该在后面的代码中完成所有数据绑定?

这是代码:

<asp:EntityDataSource runat="server" ID="StudentGroupEntityDataSource" 
ContextTypeName="GearUp.Data.StudentGroupEntities" OnContextCreating="StudentGroupEntityDataSource_ContextCreating"                               OnContextCreated="StudentGroupEntityDataSource_ContextCreated"
EnableFlattening="False" EnableDelete="True" EnableInsert="True" EnableUpdate="True" 
EntitySetName="StudentGroupMembers" 
OrderBy="it.FullName" 
Where="it.GroupID IN {@ID}">
<WhereParameters>
    <asp:ControlParameter DbType="Guid" Name="ID" ControlID="StudentGroupDropDown"
         PropertyName="SelectedValue" />
 </WhereParameters>
</asp:EntityDataSource>

public partial class StudentGroupMember
{
private string _school;
public string School
{
    get
    {
        if (_school == null)
        {
            StudentServiceClient clientStudent = new StudentServiceClient();
            var studentDetail = clientStudent.RetrieveStudentDetail(this.StudentID.ToString());
            _school = studentDetail.SchoolName;
        }
        return _school;
    }
}

}

4

0 回答 0