كيف يمكنني إنشاء متداخلة GridView لا بد أن الأم EntityDataSource الملاحة الملكية ؟
سؤال
<asp:FormView DataSourceId="edsAccounts">
<ItemTemplate>
<asp:TextBox Text='<%# Eval("Email") %>' />
<asp:DataGrid ID="dgReports" DataSource='<%# Eval("Reports") %>'>
</ItemTemplate>
</asp:FormView>
<asp:EntityDataSource ID="edsAccounts" runat="server" ConnectionString="name=Entities" DefaultContainerName="Entities" EntitySetName="Accounts" EntityTypeFilter="Account" Include="Reports" />
أريد dgReports لبدء العمل.لاحظ أن مربع نص البريد الإلكتروني يعمل على ما يرام.
المحلول
أنا في الواقع خلق منفصلة الداخلية datasources لكن لدي مشكلة أخرى.كنت غير قادر على تعيين جملة Where الوالد الكيان الهوية.
لاحظ أن FormView.DataItem ليست في المتناول ؛ انها من نوع EntityDataSourceWrapper وهو صديق فئة لا يمكن الوصول إليها.
لذلك أنا خلقت وظيفة التعامل مع ذلك عن طريق التفكير.
اعتقد انه مايكروسوفت علة ، حتى يصلحونها التالية قد تكون مفيدة لمن يستخدم متداخلة EntityDataSource الضوابط.
هنا هو:
Module Functions
Public Function GetEntity(Of TEntity As EntityObject)(ByVal entityDataSourceWrapper As Object) As TEntity
If entityDataSourceWrapper Is Nothing Then Return Nothing
Dim type = entityDataSourceWrapper.GetType()
If Not type.FullName = "System.Web.UI.WebControls.EntityDataSourceWrapper" Then Return Nothing
Dim wrapper = type.GetProperty("WrappedEntity", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
Return DirectCast(wrapper.GetValue(entityDataSourceWrapper, Nothing), TEntity)
End Function
End Module
الآن في التعليمات البرمجية خلف أفعل التالية:
Protected Sub fvAccounts_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles fvAccounts.DataBound
If fvAccounts.CurrentMode <> FormViewMode.ReadOnly Then Exit Sub
Dim account As Account = GetEntity(Of Account)(fvAccounts.DataItem)
If account Is Nothing Then Exit Sub
Dim edsReports As EntityDataSource = fvAccounts.Row.FindControl("edsReports")
edsReports.Where = "it.Account.AccountId = " & account.AccountId
gvReports.DataBind()
End Sub
ملاحظة التسلسل الهرمي في النموذج:حساب العديد من التقارير.
لا تنتمي إلى StackOverflow