Vínculo Dropdown com GridView?

2 respostas Resolvido
datagridviewcsharpwebwebforms
F

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.

2 Respostas

Dragoon
Solucao aceita

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);
            }
        }
    }
}
F

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

Criado 10 de setembro de 2016
Ultima resposta 10 de set. de 2016
Respostas 2
Participantes 2