1

ネストされたリストビュー内の親リストビューへのアクセスに関する多くの質問を見てきましたが、私の質問に答えたものはありません。

最初のリストビューの一部のプロパティにアクセスして、2 番目に送信できないのはなぜですか? さまざまなプロパティを試しましたが、どれも機能しません。ItemPlaceHolder または単に User_Category はどうですか? 私の考えは、2 つの ObjectDataSoureces でこれを行い、DataKeyName を親リストビューから 2 番目の 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>
4

1 に答える 1

0

それは可能ですが、それはすべて、「渡す」とはどういう意味か、何を渡したいか、いつ値を渡したいかによって異なります。

メインリストビューから子リストビューに情報を渡したい場合は、メインリストビューのItemCreatedイベントをオーバーライドできます。その場合、にアクセスできますContainer.DataItem。これにより、親リストビューの行がバインドされている現在のオブジェクトが提供されます。次に、この関数を使用しFindControlて内部リストビューを検索し、必要に応じて操作できます。ただし、は使用できない場合がObjectDataSourceあります。2番目のリストビューのデータソースを直接バインドする必要がある場合があります。

于 2012-04-11T04:40:28.920 に答える