2014-12-18 1 views
0

ListView 컨트롤을 채우기 위해 DropDownList의 Selected Value 결과를 사용하여 Entity Framework 쿼리를 필터링하는 가장 좋은 방법을 찾는 데 문제가 있습니다. 다음과 같이DropDownList를 통해 ASP.NET Entity Framework Bound ListView를 필터링하는 방법은 무엇입니까?

내 코드는 다음과 같습니다

Public Function ListViewProducts_GetData() As IQueryable 

    Dim strVendorName As String = ddlFilterVendor.SelectedValue 

    Dim myEntities As New InventoryProductsEntities() 
    Return (From product In myEntities.InventoryProducts 
      Order By product.ID Ascending 
      Where product.VendorID = strVendorName 
      Select product).Take(ddlDisplayRecords.SelectedValue) 

End Function 

이 지금 꽤 거친이지만, 나는이 공급 업체에 의해 데이터, 다음 페이지를 필터링 할 수 있도록하고 싶습니다,하지만 난에있는 ListView를 얻을 수 없다 업데이트 된 쿼리 된 데이터를 표시합니다. ddlFilterVendor.SelectedValue가 변경된 경우에도 이전과 동일한 데이터가 계속 표시됩니다. 다음과 같이

목록 코드 드롭 다운은 : 나는이 시점에서 막혔어요

<asp:DropDownList ID="ddlFilterVendor" runat="server" AutoPostBack="True" DataSourceID="SqlDataSourceVendor" DataTextField="VendorID" DataValueField="VendorID" AppendDataBoundItems="True"> 
    <asp:ListItem Selected="True">All</asp:ListItem> 
</asp:DropDownList> 

.... 내가 QueryString을에 ddlFilterVendor.SelectedValue을 게시하고 페이지를 다시로드에 대해 생각했다, 그러나 나는 것 이것을하기위한 더 쉬운 방법이 있어야한다고 상상해보십시오. 어떤 도움이나 아이디어라도 대단히 감사하겠습니다! 감사! 나는이 문제에 대한 해결책을 발견

<asp:SqlDataSource ID="SqlDataSourceVendor" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>" SelectCommand="SELECT DISTINCT [VendorID] FROM [InventoryProducts]"></asp:SqlDataSource> 
+0

드롭 다운 메뉴에서 SqlDataSource를 사용하고 있습니다. 그 정의를 게시 할 수 있습니까? – Andrei

+0

[EntityDataSource] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource%28v=vs.110%29.aspx)를 사용하지 않는 이유는 무엇입니까? – OneFineDay

+0

@Andrei - SqlDataSource 코드를 추가했습니다. 필터가 페이지로드에 작동하지만 DropDownList에서 다른 항목을 선택하면 포스트 백이 발생하고 ListViewProducts_GetData() 함수가 실행되지만 페이지가 처음로드 될 때 표시된 ListView의 항목은 변경되지 않습니다. – J2Tuner

답변

0

다음과 같이

의 SqlDataSource 코드입니다.

ListViewProducts.DataBind() 

이 다시 쿼리 코드에서와 같이 해당 공급 업체의 필터를 사용하여 데이터베이스를 :

Public Function ListViewProducts_GetData() As IQueryable 

    Dim strVendorName As String = ddlFilterVendor.SelectedValue 

    Dim myEntities As New InventoryProductsEntities() 
    Return (From product In myEntities.InventoryProducts 
      Order By product.ID Ascending 
      Where product.VendorID = strVendorName 
      Select product).Take(ddlDisplayRecords.SelectedValue) 

End Function 

덕분에 DropDownList로의의 SelectedIndexChanged 이벤트에서, 나는 다음과 같은 방법을 호출!

관련 문제