Vínculo Dropdown com GridView?

Estou criando um GridView e o populando a partir de uma classe genérica, as classes possuem a propriedade situação(concluido/em andamento/ falha).

Criei um dropdown externo ao GridView que possui estas 3 situações, ao selecionar uma das situações neste dropdown,a GridView deixaria de mostrar todos os resultados e mostraria apenas aqueles com a mesma situação escolhida no dropdown, porém não estou conseguindo vincular o GridView a este Dropdown, como vincular?

Observação: usando o VisualStudio 2010.

Faltou especificar se os dados contidos nessa classe Genérica vem de uma base de dados, como estão relacionados com esse dropdown. Vou simular então com um objeto tipado com essas configurações pra que entenda e reproduza na sua programação:

Classe base:

public class Cliente
{
	public Cliente()
	{

	}
	public Cliente(int id, string nome, ushort situacao)
	{
		Id = id;
		Nome = nome;
		Situacao = situacao;
	}
	public int Id { get; set; }
	public string Nome  { get; set; }
	public ushort Situacao { get; set; }
}

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebGrid.aspx.cs" Inherits="WebApplication1.WebGrid" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                <asp:ListItem Text="Todos" Value="0"></asp:ListItem>
                <asp:ListItem Text="Concluído" Value="1"></asp:ListItem>
                <asp:ListItem Text="Em andamento" Value="2"></asp:ListItem>
                <asp:ListItem Text="Falha" Value="3"></asp:ListItem>
            </asp:DropDownList>
        </div>
        
        <div>
            <asp:GridView runat="server" ID="GridView1"></asp:GridView>
        </div>
    </form>
</body>
</html>

Código do ASPX:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebGrid : System.Web.UI.Page
    {

        private static List<Cliente> clientes = new List<Cliente>()
        {
            new Cliente(1, "A", 1),
            new Cliente(2, "B", 2),
            new Cliente(3, "C", 3)
        };
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                Load_Grid();
            }
        }

        private void Load_Grid(ushort v = 0)
        {

            GridView1.DataSource = v.Equals(0)
                    ? clientes.ToList()
                    : clientes.Where(c => c.Situacao == v).ToList();

            GridView1.DataBind();

        }

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ushort s;
            if (ushort.TryParse(DropDownList1.SelectedValue.ToString(), out s))
            {
                Load_Grid(s);
            }
        }
    }
}

100%, era isto mesmo que precisava.
A classe é de um objeto tipado mesmo.
Obrigado

1 curtida