好的,我在嵌套列表视图中看到了很多关于访问父列表视图的问题,但没有人回答我的问题。
为什么我无法访问第一个listview的某些属性并将其发送到第二个?我尝试了很多不同的属性但没有工作。 ItemPlaceHolder或User_Category怎么样?我的想法是使用两个ObjectDataSoureces,并将父列表视图中的DataKeyName发送到第二个ObjectDataSource。但我不知道如何获取DataKeyName(参见下面的????)
<asp:ListView ID="ListView1" runat="server"
DataSourceID="srcGetOrderForm"
DataKeyNames=User_Category
ItemPlaceholderID="lvItemPlaceHolder">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="lvItemPlaceHolder" />
</LayoutTemplate>
<ItemTemplate>
<asp:Panel runat="server" ID="panelCustomerInfo"
cssclass="collapsePanelHeaderForFilter">
<%# Eval("User_Category")%>
</asp:Panel>
<asp:panel runat="server" ID="panelCustomerDetails"
cssclass="collapsePanelForFilter">
<asp:ListView ID="ListView2" runat="server"
DataSourceID="srcGetOrderForm2"
ItemPlaceholderID="lvOrdersItemPlaceHolder">
<LayoutTemplate>
<ul>
<asp:PlaceHolder runat="server"
ID="lvOrdersItemPlaceHolder" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li>
Description: <%# Eval("Description")%>
</li>
</ItemTemplate>
</asp:ListView>
</asp:panel>
</ItemTemplate>
</asp:ListView>
<asp:ObjectDataSource
ID="srcGetOrderForm"
TypeName = "ABC.Products"
SelectMethod = "NewGetOrderFormCategories"
runat="server" >
<SelectParameters>
<asp:ProfileParameter Name="User" PropertyName="User_ID" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource
ID="srcGetOrderForm2"
TypeName = "ABC.Products"
SelectMethod = "NewGetOrderFormCategoryItems"
runat="server" >
<SelectParameters>
<asp:ProfileParameter Name="User" PropertyName="User_ID" />
<asp:ControlParameter ControlID="ListView1" Name="User_Category" PropertyName=???? />
</SelectParameters>
</asp:ObjectDataSource>
答案 0 :(得分:0)
可以这样做,但这一切都取决于你的意思是“传递”,你想传递什么,以及什么时候传递价值。
如果要将主列表视图中的信息传递到子列表视图,可以覆盖主列表视图的ItemCreated
事件。在那种情况下,您可以访问Container.DataItem
,它将提供父列表视图的行绑定的当前对象。然后,您可以使用FindControl
函数查找内部列表视图,并根据需要与其进行交互。但是,您可能无法使用ObjectDataSource
。您可能必须直接绑定第二个listview的数据源。