none
Calendário com Gridview - Consulta de Disponibilidade de datas RRS feed

  • Pergunta

  • Olá,

    Estou desenvolvendo um sistema para uma pousada, onde coloco uma entrada(Dataini) e saída(DadaFim) salvando no banco de dados, porém a minha dificuldade está em criar um mapa de disponibilidade, onde o administrador poderá consultar em quais datas o quarto estará disponivel.

    O exemplo abaixo demostra a minha duvida.

    Quando os dias forem ocupados estejam em "O" e quando livre "L"  conforme abaixo. 


    Dias                  1      2        3      4        5       6        7        8       9     10... 31

    Quarto1            O     O        O      L        L       L        L        O       O     O

    Quarto2            L      L        O      L        O       O        L        O       O     O

    Quando faço a reserva, apenas efetuo o lançamento da data inicial e o período final.

    Infelismente estou encontrando dificuldades em criar algo deste tipo, alguém ja passou por isso, pode compartilhar ?

    Estou utilizando c# asp.net com base de dados em sql.

    Obrigado pela atenção !

    Abraços !!

    Anderson


    Jimi Anderson

    quinta-feira, 12 de dezembro de 2013 19:35

Respostas

  • Amigo qual sua dificuldade???

    Assim: se não ta entendendo como fazer isso no Gridview ???

    Bom Exemplo:

    Bom em cima seria minha camada de persistência e logo abaixo o banco SQL Server com a Tabela reserva preenchida com algumas datas ...

    CREATE TABLE [dbo].[Quartos](
    	[QuartoId] [int] IDENTITY(1,1) NOT NULL,
    	[QuartoNumero] [int] NOT NULL,
     CONSTRAINT [PK_Quarto] PRIMARY KEY CLUSTERED 
    (
    	[QuartoId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    CREATE TABLE [dbo].[Reservas](
    	[ReservaId] [int] IDENTITY(1,1) NOT NULL,
    	[QuartoId] [int] NULL,
    	[DataIni] [smalldatetime] NULL,
    	[DataFim] [smalldatetime] NULL,
     CONSTRAINT [PK_Reservas_1] PRIMARY KEY CLUSTERED 
    (
    	[ReservaId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    ALTER TABLE [dbo].[Reservas]  WITH CHECK ADD  CONSTRAINT [FK_Reservas_Quarto] FOREIGN KEY([QuartoId])
    REFERENCES [dbo].[Quartos] ([QuartoId])
    
    ALTER TABLE [dbo].[Reservas] CHECK CONSTRAINT [FK_Reservas_Quarto]

    Agora é como eu criei as tabelas - Script Create Table Reservas e Quartos

    OK!

    Coloquei um GridView na ASPX assim:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebReservas.aspx.cs" Inherits="WebApplication1.WebReservas" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView runat="server" 
                ID="GridReserva" 
                Caption="Dias" 
                CaptionAlign="Bottom" 
                EmptyDataText="Sem Registros ..." 
                ShowFooter="True" 
                ShowHeaderWhenEmpty="True"></asp:GridView>
        </div>
        </form>
    </body>
    </html>

    E a codificação dessa página .cs ficou assim:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using WebApplication1.Models;

    namespace WebApplication1
    {
        public partial class WebReservas : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    GerarReserva();
                }
            }
            
            protected void GerarReserva()
            {
                //Variaveis que você pode mudar o seu sistema!!!
                int Mes = DateTime.Now.Month;
                int Ano = DateTime.Now.Year;


                DataTable TableReserva = new DataTable();            
                
                Layout(ref TableReserva, Mes, Ano);                       

                using (MSDNUserEntities Db = new MSDNUserEntities())
                {
                    IList<Reservas> reservas = Db.Reservas.AsNoTracking().Where(x => x.DataIni.Value.Month == Mes || x.DataFim.Value.Month == Mes).ToList();
                    IList<Quartos> quartos = Db.Quartos.AsNoTracking().ToList();
                
                    foreach (Quartos quarto in quartos)
                    {
                        DataRow Row = TableReserva.NewRow();
                        RowSet(ref Row, Mes, Ano);
                        Row["Quartos"] = quarto.QuartoNumero;
                        //
                        foreach (Reservas reserva in reservas.Where(x => x.QuartoId == quarto.QuartoId).ToList())
                        {
                            for (DateTime? DataI = reserva.DataIni; DataI <= reserva.DataFim; DataI = DataI.Value.AddDays(1))
                            {
                                if (DataI.Value.Month == Mes)
                                {
                                    Row[DataI.Value.Day.ToString()] = "O";
                                }
                            }
                        }
                        //                    
                        TableReserva.Rows.Add(Row);
                    }
                    
                    GridReserva.DataSource = TableReserva;
                    GridReserva.DataBind();
                }
            }
            protected int DiaFim(int Mes, int Ano)
            {
                int Dia = 31;
                switch (Mes)
                {
                    case 2:
                        {
                            if (Ano % 4 == 0) //Ano Bissesto ...
                            {
                                Dia = 29;
                            }
                            else 
                            { 
                                Dia = 28; 
                            }
                            break;
                        }
                    case 4:
                    case 6:                
                    case 9:
                    case 11:
                        {
                            Dia = 30;
                            break;
                        }
                }
                return Dia;
            }
            protected void RowSet(ref DataRow Row, int Mes, int Ano)
            {
                for (int d = 1; d <= DiaFim(Mes, Ano); d++)
                {
                    Row[d.ToString()] = "L";
                }
            }
            protected void Layout(ref DataTable Table, int Mes, int Ano)
            {
                Table.Columns.Clear();
                Table.Rows.Clear();
                Table.Columns.Add("Quartos");
                for (int d = 1; d <= DiaFim(Mes, Ano); d++)
                {
                    Table.Columns.Add(d.ToString());
                }
            }
        }
    }


    Esse código "Logico" pode ser melhorado mas, já apresentou esse resultado:

    Amigo isso tudo pode ser melhorado como eu já disse layout cores e tudo mas, me atentei a tirar sua duvida!

    Eu fiz com Entity, mas, se pode fazer da maneira trivial com Lista ou DataTable ou DataSet!!!



    Fulvio Cezar Canducci Dias



    sexta-feira, 13 de dezembro de 2013 00:55

Todas as Respostas

  • Amigo qual sua dificuldade???

    Assim: se não ta entendendo como fazer isso no Gridview ???

    Bom Exemplo:

    Bom em cima seria minha camada de persistência e logo abaixo o banco SQL Server com a Tabela reserva preenchida com algumas datas ...

    CREATE TABLE [dbo].[Quartos](
    	[QuartoId] [int] IDENTITY(1,1) NOT NULL,
    	[QuartoNumero] [int] NOT NULL,
     CONSTRAINT [PK_Quarto] PRIMARY KEY CLUSTERED 
    (
    	[QuartoId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    CREATE TABLE [dbo].[Reservas](
    	[ReservaId] [int] IDENTITY(1,1) NOT NULL,
    	[QuartoId] [int] NULL,
    	[DataIni] [smalldatetime] NULL,
    	[DataFim] [smalldatetime] NULL,
     CONSTRAINT [PK_Reservas_1] PRIMARY KEY CLUSTERED 
    (
    	[ReservaId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    ALTER TABLE [dbo].[Reservas]  WITH CHECK ADD  CONSTRAINT [FK_Reservas_Quarto] FOREIGN KEY([QuartoId])
    REFERENCES [dbo].[Quartos] ([QuartoId])
    
    ALTER TABLE [dbo].[Reservas] CHECK CONSTRAINT [FK_Reservas_Quarto]

    Agora é como eu criei as tabelas - Script Create Table Reservas e Quartos

    OK!

    Coloquei um GridView na ASPX assim:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebReservas.aspx.cs" Inherits="WebApplication1.WebReservas" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView runat="server" 
                ID="GridReserva" 
                Caption="Dias" 
                CaptionAlign="Bottom" 
                EmptyDataText="Sem Registros ..." 
                ShowFooter="True" 
                ShowHeaderWhenEmpty="True"></asp:GridView>
        </div>
        </form>
    </body>
    </html>

    E a codificação dessa página .cs ficou assim:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using WebApplication1.Models;

    namespace WebApplication1
    {
        public partial class WebReservas : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    GerarReserva();
                }
            }
            
            protected void GerarReserva()
            {
                //Variaveis que você pode mudar o seu sistema!!!
                int Mes = DateTime.Now.Month;
                int Ano = DateTime.Now.Year;


                DataTable TableReserva = new DataTable();            
                
                Layout(ref TableReserva, Mes, Ano);                       

                using (MSDNUserEntities Db = new MSDNUserEntities())
                {
                    IList<Reservas> reservas = Db.Reservas.AsNoTracking().Where(x => x.DataIni.Value.Month == Mes || x.DataFim.Value.Month == Mes).ToList();
                    IList<Quartos> quartos = Db.Quartos.AsNoTracking().ToList();
                
                    foreach (Quartos quarto in quartos)
                    {
                        DataRow Row = TableReserva.NewRow();
                        RowSet(ref Row, Mes, Ano);
                        Row["Quartos"] = quarto.QuartoNumero;
                        //
                        foreach (Reservas reserva in reservas.Where(x => x.QuartoId == quarto.QuartoId).ToList())
                        {
                            for (DateTime? DataI = reserva.DataIni; DataI <= reserva.DataFim; DataI = DataI.Value.AddDays(1))
                            {
                                if (DataI.Value.Month == Mes)
                                {
                                    Row[DataI.Value.Day.ToString()] = "O";
                                }
                            }
                        }
                        //                    
                        TableReserva.Rows.Add(Row);
                    }
                    
                    GridReserva.DataSource = TableReserva;
                    GridReserva.DataBind();
                }
            }
            protected int DiaFim(int Mes, int Ano)
            {
                int Dia = 31;
                switch (Mes)
                {
                    case 2:
                        {
                            if (Ano % 4 == 0) //Ano Bissesto ...
                            {
                                Dia = 29;
                            }
                            else 
                            { 
                                Dia = 28; 
                            }
                            break;
                        }
                    case 4:
                    case 6:                
                    case 9:
                    case 11:
                        {
                            Dia = 30;
                            break;
                        }
                }
                return Dia;
            }
            protected void RowSet(ref DataRow Row, int Mes, int Ano)
            {
                for (int d = 1; d <= DiaFim(Mes, Ano); d++)
                {
                    Row[d.ToString()] = "L";
                }
            }
            protected void Layout(ref DataTable Table, int Mes, int Ano)
            {
                Table.Columns.Clear();
                Table.Rows.Clear();
                Table.Columns.Add("Quartos");
                for (int d = 1; d <= DiaFim(Mes, Ano); d++)
                {
                    Table.Columns.Add(d.ToString());
                }
            }
        }
    }


    Esse código "Logico" pode ser melhorado mas, já apresentou esse resultado:

    Amigo isso tudo pode ser melhorado como eu já disse layout cores e tudo mas, me atentei a tirar sua duvida!

    Eu fiz com Entity, mas, se pode fazer da maneira trivial com Lista ou DataTable ou DataSet!!!



    Fulvio Cezar Canducci Dias



    sexta-feira, 13 de dezembro de 2013 00:55
  • Meu querido...

    muito obrigado...  a minha gratidão é tanta que estou sem palavras, obrigado mesmo. Me ajudou e muito.

    Grande abraço !!!


    Jimi Anderson

    sexta-feira, 13 de dezembro de 2013 01:42
  • Mestre, 

    Agradeço a sua ajuda, mas teria como me passar um exemplo em ado.net ? Eu não tenho experiencia em Entity. Começei a estudar pelo MVA.

    Obrigado


    Jimi Anderson

    sábado, 14 de dezembro de 2013 14:07
  • Com isso então aumentou o código que são as duas classes modelos:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace Util
    {
        public partial class Reservas
        {
            public int ReservaId { get; set; }
            public Nullable<int> QuartoId { get; set; }
            public Nullable<System.DateTime> DataIni { get; set; }
            public Nullable<System.DateTime> DataFim { get; set; }
        }
        public partial class Quartos
        {        
            public int QuartoId { get; set; }
            public int QuartoNumero { get; set; }
        }
    }

    Elas deverão existe então em algum lugar no seu projeto

    Código cs total:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using WebApplication1.Models;
    
    namespace WebApplication1
    {
        public partial class WebReservas : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    GerarReservaAdoNet();
                }
            }
            
            protected void GerarReserva()
            {
                //Variaveis que você pode mudar o seu sistema!!!
                int Mes = DateTime.Now.Month;
                int Ano = DateTime.Now.Year;
    
    
                DataTable TableReserva = new DataTable();            
                
                Layout(ref TableReserva, Mes, Ano);                       
    
                using (MSDNUserEntities Db = new MSDNUserEntities())
                {
                    IList<Reservas> reservas = Db.Reservas.AsNoTracking().Where(x => x.DataIni.Value.Month == Mes || x.DataFim.Value.Month == Mes).ToList();
                    IList<Quartos> quartos = Db.Quartos.AsNoTracking().ToList();
                
                    foreach (Quartos quarto in quartos)
                    {
                        DataRow Row = TableReserva.NewRow();
                        RowSet(ref Row, Mes, Ano);
                        Row["Quartos"] = quarto.QuartoNumero;
                        //
                        foreach (Reservas reserva in reservas.Where(x => x.QuartoId == quarto.QuartoId).ToList())
                        {
                            for (DateTime? DataI = reserva.DataIni; DataI <= reserva.DataFim; DataI = DataI.Value.AddDays(1))
                            {
                                if (DataI.Value.Month == Mes)
                                {
                                    Row[DataI.Value.Day.ToString()] = "O";
                                }
                            }
                        }
                        //                    
                        TableReserva.Rows.Add(Row);
                    }
                    
                    GridReserva.DataSource = TableReserva;
                    GridReserva.DataBind();
                }
            }
            protected void GerarReservaAdoNet()
            {
                //Variaveis que você pode mudar o seu sistema!!!
                int Mes = DateTime.Now.Month;
                int Ano = DateTime.Now.Year;
                
                /////////////////////////////////////////////////////////////////////////////////
                
                //Apoio Variaveis
                DataTable TableReserva = new DataTable();            
                IList<Util.Quartos> quartos = null;
                IList<Util.Reservas> reservas = null;
                
    
                //Layout
                Layout(ref TableReserva, Mes, Ano);
    
                /////////////////////////////////////////////////////////////////////////////////
    
                //conexao Ado.Net
                String ConexaoString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MSDNUser;Persist Security Info=True;User ID=sa;Password=senha;MultipleActiveResultSets=True;Application Name=EntityFramework";
                using (SqlConnection Db = new SqlConnection(ConexaoString))            
                {
                    Db.Open();
                    /////////////////////////////////////////////////////////////////////////////////
                    //Carregando Quartos
                    using (SqlCommand CommadQuarto = Db.CreateCommand())
                    {
                        CommadQuarto.CommandType = CommandType.Text;
                        CommadQuarto.CommandText = "SELECT QuartoId, QuartoNumero FROM Quartos";
                        using (SqlDataReader ReaderQuarto = CommadQuarto.ExecuteReader())
                        {
                            if (ReaderQuarto.HasRows){
                                quartos = new List<Util.Quartos>();
                                while (ReaderQuarto.Read())
                                {
                                    Util.Quartos quarto = new Util.Quartos();
                                    quarto.QuartoId = ReaderQuarto.GetInt32(0);
                                    quarto.QuartoNumero = ReaderQuarto.GetInt32(1);
                                    quartos.Add(quarto);
                                }
                            }
                            ReaderQuarto.Close();                             
                        }
                    }
                    /////////////////////////////////////////////////////////////////////////////////
                    //Carregando Reserva
                    using (SqlCommand CommadReserva = Db.CreateCommand())
                    {
                        CommadReserva.CommandType = CommandType.Text;
                        CommadReserva.CommandText = "SELECT ReservaId, QuartoId, DataIni, DataFim FROM Reservas WHERE (MONTH(DataIni) = @Mes OR MONTH(DataFim) = @Mes) AND YEAR(DataIni)=@Ano";
                        CommadReserva.Parameters.Add("@Mes", SqlDbType.Int).Value = Mes;                    
                        CommadReserva.Parameters.Add("@Ano", SqlDbType.Int).Value = Ano;
                        using (SqlDataReader ReaderReserva = CommadReserva.ExecuteReader())
                        {
                            if (ReaderReserva.HasRows)
                            {
                                reservas = new List<Util.Reservas>();
                                while (ReaderReserva.Read())
                                {
                                    Util.Reservas reserva = new Util.Reservas();
                                    reserva.ReservaId = ReaderReserva.GetInt32(0);
                                    reserva.QuartoId = ReaderReserva.GetInt32(1);
                                    reserva.DataIni = ReaderReserva.GetDateTime(2);
                                    reserva.DataFim = ReaderReserva.GetDateTime(3);
                                    reservas.Add(reserva);
                                } 
                            }
                        }
                    } 
                    /////////////////////////////////////////////////////////////////////////////////
                    //Trabalhando e Construindo o DataTable com Quartos e Reserva
                    foreach (Util.Quartos quarto in quartos)
                    {
                        DataRow Row = TableReserva.NewRow();
                        RowSet(ref Row, Mes, Ano);
                        Row["Quartos"] = quarto.QuartoNumero;
                        //
                        foreach (Util.Reservas reserva in reservas.Where(x => x.QuartoId == quarto.QuartoId).ToList())
                        {
                            for (DateTime? DataI = reserva.DataIni; DataI <= reserva.DataFim; DataI = DataI.Value.AddDays(1))
                            {
                                if (DataI.Value.Month == Mes)
                                {
                                    Row[DataI.Value.Day.ToString()] = "O";
                                }
                            }
                        }
                        //                    
                        TableReserva.Rows.Add(Row);
                    }
    
                    /////////////////////////////////////////////////////////////////////////////////
                    //Carregando a Grid
                    GridReserva.DataSource = TableReserva;
                    GridReserva.DataBind();
    
                    /////////////////////////////////////////////////////////////////////////////////
                    //fechando conexao
                    Db.Close();
                }
            }
            protected int DiaFim(int Mes, int Ano)
            {
                int Dia = 31;
                switch (Mes)
                {
                    case 2:
                        {
                            if (Ano % 4 == 0) //Ano Bissesto ...
                            {
                                Dia = 29;
                            }
                            else 
                            { 
                                Dia = 28; 
                            }
                            break;
                        }
                    case 4:
                    case 6:                
                    case 9:
                    case 11:
                        {
                            Dia = 30;
                            break;
                        }
                }
                return Dia;
            }
            protected void RowSet(ref DataRow Row, int Mes, int Ano)
            {
                for (int d = 1; d <= DiaFim(Mes, Ano); d++)
                {
                    Row[d.ToString()] = "L";
                }
            }
            protected void Layout(ref DataTable Table, int Mes, int Ano)
            {
                Table.Columns.Clear();
                Table.Rows.Clear();
                Table.Columns.Add("Quartos");
                for (int d = 1; d <= DiaFim(Mes, Ano); d++)
                {
                    Table.Columns.Add(d.ToString());
                }
            }
        }
    }

    Perceba que agora tem um rotina a mais e ela é chamada no Load da Pagina esse:

    protected void GerarReservaAdoNet()
    {
    	//Variaveis que você pode mudar o seu sistema!!!
    	int Mes = DateTime.Now.Month;
    	int Ano = DateTime.Now.Year;
    	
    	/////////////////////////////////////////////////////////////////////////////////
    	
    	//Apoio Variaveis
    	DataTable TableReserva = new DataTable();            
    	IList<Util.Quartos> quartos = null;
    	IList<Util.Reservas> reservas = null;
    	
    
    	//Layout
    	Layout(ref TableReserva, Mes, Ano);
    
    	/////////////////////////////////////////////////////////////////////////////////
    
    	//conexao Ado.Net
    	String ConexaoString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MSDNUser;Persist Security Info=True;User ID=sa;Password=senha;MultipleActiveResultSets=True;Application Name=EntityFramework";
    	using (SqlConnection Db = new SqlConnection(ConexaoString))            
    	{
    		Db.Open();
    		/////////////////////////////////////////////////////////////////////////////////
    		//Carregando Quartos
    		using (SqlCommand CommadQuarto = Db.CreateCommand())
    		{
    			CommadQuarto.CommandType = CommandType.Text;
    			CommadQuarto.CommandText = "SELECT QuartoId, QuartoNumero FROM Quartos";
    			using (SqlDataReader ReaderQuarto = CommadQuarto.ExecuteReader())
    			{
    				if (ReaderQuarto.HasRows){
    					quartos = new List<Util.Quartos>();
    					while (ReaderQuarto.Read())
    					{
    						Util.Quartos quarto = new Util.Quartos();
    						quarto.QuartoId = ReaderQuarto.GetInt32(0);
    						quarto.QuartoNumero = ReaderQuarto.GetInt32(1);
    						quartos.Add(quarto);
    					}
    				}
    				ReaderQuarto.Close();                             
    			}
    		}
    		/////////////////////////////////////////////////////////////////////////////////
    		//Carregando Reserva
    		using (SqlCommand CommadReserva = Db.CreateCommand())
    		{
    			CommadReserva.CommandType = CommandType.Text;
    			CommadReserva.CommandText = "SELECT ReservaId, QuartoId, DataIni, DataFim FROM Reservas WHERE (MONTH(DataIni) = @Mes OR MONTH(DataFim) = @Mes) AND YEAR(DataIni)=@Ano";
    			CommadReserva.Parameters.Add("@Mes", SqlDbType.Int).Value = Mes;                    
    			CommadReserva.Parameters.Add("@Ano", SqlDbType.Int).Value = Ano;
    			using (SqlDataReader ReaderReserva = CommadReserva.ExecuteReader())
    			{
    				if (ReaderReserva.HasRows)
    				{
    					reservas = new List<Util.Reservas>();
    					while (ReaderReserva.Read())
    					{
    						Util.Reservas reserva = new Util.Reservas();
    						reserva.ReservaId = ReaderReserva.GetInt32(0);
    						reserva.QuartoId = ReaderReserva.GetInt32(1);
    						reserva.DataIni = ReaderReserva.GetDateTime(2);
    						reserva.DataFim = ReaderReserva.GetDateTime(3);
    						reservas.Add(reserva);
    					} 
    				}
    			}
    		} 
    		/////////////////////////////////////////////////////////////////////////////////
    		//Trabalhando e Construindo o DataTable com Quartos e Reserva
    		foreach (Util.Quartos quarto in quartos)
    		{
    			DataRow Row = TableReserva.NewRow();
    			RowSet(ref Row, Mes, Ano);
    			Row["Quartos"] = quarto.QuartoNumero;
    			//
    			foreach (Util.Reservas reserva in reservas.Where(x => x.QuartoId == quarto.QuartoId).ToList())
    			{
    				for (DateTime? DataI = reserva.DataIni; DataI <= reserva.DataFim; DataI = DataI.Value.AddDays(1))
    				{
    					if (DataI.Value.Month == Mes)
    					{
    						Row[DataI.Value.Day.ToString()] = "O";
    					}
    				}
    			}
    			//                    
    			TableReserva.Rows.Add(Row);
    		}
    
    		/////////////////////////////////////////////////////////////////////////////////
    		//Carregando a Grid
    		GridReserva.DataSource = TableReserva;
    		GridReserva.DataBind();
    
    		/////////////////////////////////////////////////////////////////////////////////
    		//fechando conexao
    		Db.Close();
    	}
    }

    OK!

    Obs: Olhe a ConexaoString e altere para sua ai!


    Fulvio Cezar Canducci Dias


    sábado, 14 de dezembro de 2013 15:51
  • Cara... muito obrigado...

    vai me ajudar e muito !

    Parabéns, que Deus lhe dê mais conhecimento.

    haaaaa... um dia ainda chego no seu nível hein ?! kkkk

    Obrigado mais uma vez !

    Att.


    Jimi Anderson

    sábado, 14 de dezembro de 2013 16:26
  • Amigão...

    La vou eu mais uma vez te incomodar...

    Depois de muita tentativa, conseguir fazer ele rodar em Entity, porém... quando comecei a criar o sistema, não fiz a relação de tabelas. Eu gostaria apenas de trabalhar com a tabela Reserva. Ja fiz de tudo aqui, mas não consegui.

    Vou tentar te explicar o que eu to tentando fazer.

    Na minha tabela, tenho um campo chamado quarto do tipo varchar, nele salvo os nomes dos quartos de nomes(Israel,França,Italia), eu quaria  criar uma listagem exatamente conforme você criou, só que ao invés de listar os numeros dos quartos, eles apareçam pelo nomes tematicos, isso é possível ? Confesso que tentei de tudo.

    Será que vc pode me ajudar mais uma vez ?

    Se sim, pode postar como entity mesmo, adorei esta ferramenta, muito mais pratica.

    Desculpe e obrigado pela sua atenção !

    Abraços


    Jimi Anderson

    sábado, 14 de dezembro de 2013 18:53
  • Você vai ter que fazer um JOIN nas duas entidades mesmo que elas não tenham relação!

    Exemplo do meu Blog: 

    Lambda Expression

    http://fulviocanducci.wordpress.com/2013/12/06/entity-framework-inner-join-e-left-join-lambda-expression/

    e Linq comum!

    http://fulviocanducci.wordpress.com/2010/12/04/ado-net-entity-data-model-com-inner-join/


    Fulvio Cezar Canducci Dias

    sábado, 14 de dezembro de 2013 22:19
  • Oi Flavio,

    Amigão... consegui aqui mesmo com 02 tabelas. Me ajudou muito !

    Agora prometo ser a ultima coisa. Como faço por exemplo; Caso seja "O" (Ocupado) a celula apareça em vermelho.

    Achei varios exemplos aqui, mais apenas para a linha inteira. Pode me ajudar nessa ?

    Obrigado.

    Anderson


    Jimi Anderson

    domingo, 15 de dezembro de 2013 03:21
  • Adicione mais essa rotina 

    protected void ColorGrid()
    {               
    	foreach (GridViewRow Row in GridReserva.Rows)
    	{
    		for (int i = 0; i < Row.Cells.Count; i++)
    		{
    			//Compara Rows Com "O"
    			if (Row.Cells[i].Text.ToLower().Equals("o"))
    			{
    				Row.Cells[i].BackColor = Color.Red;
    			}
    			//comparar Rows com "L"
    			else if (Row.Cells[i].Text.ToLower().Equals("l"))
    			{
    				Row.Cells[i].BackColor = Color.GreenYellow;
    			}
    		}
    	}
    }

    E chama ela no final da outro rotina: GerarReservaAdoNet()

    /////////////////////////////////////////////////////////////////////////////////
    		//fechando conexao
    		Db.Close();
    	}
    	ColorGrid(); // aqui ...
    }


    Fulvio Cezar Canducci Dias

    domingo, 15 de dezembro de 2013 13:04
  • Ou!

    Adicione um evento RowDataBound no seu GridView e vai no código e adicione esse exemplo de código:

    protected void GridReserva_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    	foreach (TableCell Cell in e.Row.Cells)
    	{
    		if (Cell.Text.ToLower().Equals("o"))
    		{
    			Cell.BackColor = Color.Red;
    		}
    	}
    }

    Qualquer um dos dois resultado no que você espera!


    Fulvio Cezar Canducci Dias

    domingo, 15 de dezembro de 2013 13:09
  • Obrigado amigão...

    Me ajudou bastante !

    Grande abraços e um feliz natal e um ótimo 2014 abençoado !

    Att


    Jimi Anderson

    domingo, 15 de dezembro de 2013 15:18