1

プロパティ StudentID と StudentName を持つエンティティ オブジェクト Student があります。その学生の現在の学校を見つけるためにサービスを使用する部分クラス Student があります。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