プロパティ 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;
}
}
}