Filtering Data With the ObjectDataSource control - Demo


<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Show Filtered Movies</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    <asp:DropDownList
        id="ddlMovieCategory"
        DataSourceID="srcMovieCategories"
        DataTextField="Name"
        DataValueField="Id"
        Runat="server" />
    <asp:Button
        id="btnSelect"
        Text="Select"
        Runat="server" />
        
    <hr />
    
    <asp:GridView
        id="grdMovies"
        DataSourceID="srcMovies"
        AutoGenerateColumns="false"
        Runat="server">
        <Columns>
        <asp:BoundField
            DataField="Title"
            HeaderText="Movie Title" />
        <asp:BoundField
            DataField="Director"
            HeaderText="Movie Director" />    
        </Columns>
    </asp:GridView>        
    
    <asp:ObjectDataSource
        id="srcMovieCategories"
        TypeName="FilterMovies"
        SelectMethod="GetMovieCategories"
        EnableCaching="true"
        CacheDuration="Infinite"
        Runat="server" />
        
    <asp:ObjectDataSource
        id="srcMovies"
        TypeName="FilterMovies"
        SelectMethod="GetMovies"
        EnableCaching="true"
        CacheDuration="Infinite"
        FilterExpression="CategoryID={0}"
        Runat="server">
        <FilterParameters>
        <asp:ControlParameter 
            Name="Category"
            ControlID="ddlMovieCategory" />
        </FilterParameters>
    </asp:ObjectDataSource>    
    
    
    </div>
    </form>
</body>
</html>


** FilterMovies.vb **

Imports System
Imports System.Web
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Configuration

Public Class FilterMovies

    Private ReadOnly _conString As String

    Public Function GetMovies() As DataSet
        ' Initialize DataAdapter
        Dim commandText As String = "SELECT Title,Director,CategoryId FROM Movies"
        Dim dad As SqlDataAdapter = New SqlDataAdapter(commandText, _conString)

        ' Return DataSet
        Dim dstMovies As New DataSet()
        Using dad
            dad.Fill(dstMovies)
        End Using
        Return dstMovies
    End Function

    Public Function GetMovieCategories() As DataSet
        ' Initialize DataAdapter
        Dim commandText As String = "SELECT Id,Name FROM MovieCategories"
        Dim dad As New SqlDataAdapter(commandText, _conString)

        ' Return DataSet
        Dim dstCategories As New DataSet()
        Using dad
            dad.Fill(dstCategories)
        End Using
        Return dstCategories
    End Function

    Public Sub New()
        _conString = WebConfigurationManager.ConnectionStrings("MyDatabase").ConnectionString
    End Sub
End Class