2011-01-24 6 views
0

이 코드가 있는데 ListViewEventsOuter에서 "where"절이 < % # Eval ("Id") % 일 때 "it.MembershipOption.Id"값이 필요합니다. Eval을 "where"절에 추가하려고 시도했지만 오류가 발생합니다.ListView에서 EntityDataSource로 값을 전달합니다.

어떻게 처리하나요?

<asp:ListView ID="ListViewEventsOuter" runat="server"> 
    <ItemTemplate> 
     <a name='<%# Eval("Id") %>'></a> 
     <h3>Events for <%# Eval("Text")%> members</h3> 

     <asp:EntityDataSource ID="EntityDataSource1" runat="server" 
     ConnectionString="name=Entities" Include="EventType, MembershipOption" 
     DefaultContainerName="Entities" EntitySetName="Events" 
     EntityTypeFilter="" Select="" Where='it.Active == True && it.MembershipOption.Id == [THIS VALUE TO COME FROM THE PREVIOUS ID IN LISTVIEW]'> 
     </asp:EntityDataSource> 

     <asp:ListView ID="ListViewEventsInner" runat="server"> 

       ETC.... 

답변

0

솔루션 :

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
        ConnectionString="name=Entities" Include="EventType, MembershipOption" 
        DefaultContainerName="Entities" EntitySetName="Events" 
        EntityTypeFilter="" Select="" Where='it.Active == True && it.MembershipOption.Id == @membershipOptionId'> 
        <WhereParameters> 
         <asp:Parameter Name="membershipOptionId" DbType="Int32" DefaultValue="2" /> 
        </WhereParameters> 
       </asp:EntityDataSource> 


protected void ListViewEventsOuter_ItemDataBound(object sender, ListViewItemEventArgs e) 
     { 
      ListViewDataItem item = (ListViewDataItem)e.Item; 
      MembershipOption m = (MembershipOption)item.DataItem; 
      string membershipOptionId = m.Id.ToString(); 

      EntityDataSource entityDataSource1 = (EntityDataSource)e.Item.FindControl("EntityDataSource1"); 
      Parameter parameter = entityDataSource1.WhereParameters[0]; 
      parameter.DefaultValue = membershipOptionId.ToString(); 

     } 
관련 문제