private void dtgLocalidades_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
        {
            DsCodigoPostalRetiro ds = new DsCodigoPostalRetiro();

            ds = (DsCodigoPostalRetiro)Session["DsCodigoPostalRetiroCliente"];
            foreach (DataGridItem item in dtgLocalidades.Items)
            {
                DsCodigoPostalRetiro.DatosRow dr = (DsCodigoPostalRetiro.DatosRow)ds.Datos.Rows[item.DataSetIndex];
                CheckBox chk = (CheckBox)item.FindControl("chkAsignar");
                dr.Seleccionado = chk.Checked;
            }
            Session["DsCodigoPostalRetiroCliente"] = ds;
            BindGridPaginacion(e.NewPageIndex);
        }
        private void Validaciones()
        {
            bool tieneLocalidades = false;

            if (Utiles.Validaciones.obtieneEntero(this.txtTarifarioRetiroEntregaID.Text) == 0)
            {
                throw new Exception("Debe seleccionar un Tarifario Retiro/Entrega.");
            }

            if (chkPais.Checked || chkProvincia.Checked)
            {
                tieneLocalidades = true;
            }

            for (int i = 0; i < lstAgrupacionRetiroEntrega.Items.Count; i++)
            {
                if (lstAgrupacionRetiroEntrega.Items[i].Selected)
                {
                    tieneLocalidades = true; break;
                }
            }

            if (!tieneLocalidades)
            {
                DsCodigoPostalRetiro ds = (DsCodigoPostalRetiro)Session["DsCodigoPostalRetiroCliente"];
                foreach (DataGridItem item in dtgLocalidades.Items)
                {
                    DsCodigoPostalRetiro.DatosRow dr = (DsCodigoPostalRetiro.DatosRow)ds.Datos.Rows[item.DataSetIndex];
                    CheckBox chk = (CheckBox)item.FindControl("chkAsignar");
                    dr.Seleccionado = chk.Checked;
                    if (dr.Seleccionado)
                    {
                        tieneLocalidades = true; break;
                    }
                }
            }

            if (!tieneLocalidades)
            {
                throw new Exception("Debe seleccionar un Codigo Postal, Provincia, País o Agrupacion.");
            }
        }
        private void Guardar()
        {
            Page.Validate();
            if (!Page.IsValid)
            {
                return;
            }
            Validaciones();

            DsCodigoPostalRetiro ds = (DsCodigoPostalRetiro)Session["DsCodigoPostalRetiroCliente"];

            foreach (DataGridItem item in dtgLocalidades.Items)
            {
                DsCodigoPostalRetiro.DatosRow dr = (DsCodigoPostalRetiro.DatosRow)ds.Datos.Rows[item.DataSetIndex];
                CheckBox chk = (CheckBox)item.FindControl("chkAsignar");
                dr.Seleccionado = chk.Checked;
            }
            Session["DsCodigoPostalRetiroCliente"] = ds;

            ICodigoPostalRetiroCliente codigoPostalRetiro = CodigoPostalRetiroClienteFactory.GetCodigoPostalRetiroCliente();

            codigoPostalRetiro.CodigoPostalRetiroClienteID     = 0;
            codigoPostalRetiro.TarifarioClienteRetiroEntregaID = Utiles.Validaciones.obtieneEntero(this.txtTarifarioRetiroEntregaID.Text);
            codigoPostalRetiro.UnidadesVentas.Add(UnidadVentaID);
            codigoPostalRetiro.ClienteID = ClienteID;
            //Se guarda la provincia como entrega
            if (chkProvincia.Checked)
            {
                if (Utiles.Validaciones.obtieneEntero(txtProvinciaSel.Text) == 0)
                {
                    throw new Exception("Debe seleccionar la provincia.");
                }
                else
                {
                    codigoPostalRetiro.ProvinciaID = Utiles.Validaciones.obtieneEntero(txtProvinciaSel.Text);
                }
            }

            //Se guarda el pais como entrega
            if (chkPais.Checked)
            {
                if (Utiles.Validaciones.obtieneEntero(txtPaisSel.Text) == 0)
                {
                    throw new Exception("Debe seleccionar el pais.");
                }
                else
                {
                    codigoPostalRetiro.PaisID = Utiles.Validaciones.obtieneEntero(txtPaisSel.Text);
                }
            }

            // Se guardan las agrupaciones como entregas
            for (int i = 0; i < lstAgrupacionRetiroEntrega.Items.Count; i++)
            {
                if (lstAgrupacionRetiroEntrega.Items[i].Selected)
                {
                    codigoPostalRetiro.Agrupaciones.Add(Utiles.Validaciones.obtieneEntero(lstAgrupacionRetiroEntrega.Items[i].Value));
                }
            }

            // Se guardan las localidades como entregas
            if (ds != null)
            {
                foreach (DsCodigoPostalRetiro.DatosRow dr in ds.Datos)
                {
                    if ((dr.IsSeleccionadoNull() ? false : dr.Seleccionado) == true)
                    {
                        codigoPostalRetiro.Localidades.Add(dr.LocalidadID);
                        codigoPostalRetiro.CodigosPostales.Add(dr.IsCodigoPostalIDNull() ? 0 : dr.CodigoPostalID);
                    }
                }
            }

            codigoPostalRetiro.Guardar(usuario);

            HGDataBind(false);
            LimpiarSeleccion();

            string script = "";

            script += "			alert('Los datos se guardaron correctamente.');\n";

            ScriptManager.RegisterClientScriptBlock(this.UpdatePanel2,
                                                    UpdatePanel2.GetType(),
                                                    "muestraMensaje",
                                                    script,
                                                    true);

            Consultar();
            ConsultarAsignadas();
        }