Проблемы с отображением окончания объекта [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Проблемы с отображением окончания объекта [закрыто]

Сообщение Anonymous »

Я хочу отобразить в двух Combobox в списке возможных часов начала и окончания пользователь может выбрать бронирование в установке с использованием функции Comboboxinstalaciones_selectionChanged (объект. < /p>
Сначала он работает, но если пользователь пытается выбрать другую установку, комбо -конец конца установки больше не отображается. < /p>
Я оставил здесь код, который я использую для этого:
Услуги от horarioshasinstalaciones
internal class HorariosHasInstalacioneServicios : ServicioGenerico
{
private IDContexto contexto;
public HorariosHasInstalacioneServicios(IDContexto context) : base(context)
{
contexto = context;
}

// Metodo LINQ para sacar los horarios de las instalaciones segun su id
public IEnumerable ObtenerHorariosPorInstalacionConInclude(int idInstalacion)
{
var horariosUnicos = contexto.HorariosHasInstalaciones
.Include(hhi => hhi.IdHorariosNavigation)
.Where(hhi => hhi.IdInstalaciones == idInstalacion)
.Select(hhi => new Horario
{
Inicio = hhi.IdHorariosNavigation.Inicio,
Fin = hhi.IdHorariosNavigation.Fin
})
.GroupBy(h => h.Inicio)
.Select(grp => grp.First())
.ToList();

return horariosUnicos;
}
}

mvm из резервов
public class MVMReservar : MVBaseCRUD
{

private IDContexto idContexto;
private InstalacionesServicio instalacionesServicio;
private ReservaServicio reservaServicio;
private ListCollectionView listaAux;
private List listaHorariosInicio;
private List listaHorariosFin;
private HorariosHasInstalacioneServicios horariosInstaServicio;
private HorariosServicio horariosServicio;
private Reserva _reserva;

public MVMReservar(IDContexto ent, int usuario)
{
this.idContexto = ent;
inicializa();
}

private void inicializa()
{
reservaServicio = new ReservaServicio(idContexto);
servicio = reservaServicio;
instalacionesServicio = new InstalacionesServicio(idContexto);
horariosInstaServicio = new HorariosHasInstalacioneServicios(idContexto);
horariosServicio = new HorariosServicio(idContexto);
_reserva = new Reserva();
listaAux = new ListCollectionView(reservaServicio.GetAll);
var reservas = GetReservasPorUsuario(usuario);
listaReservasUsuarios = new ListCollectionView(reservas);
}

public List ListaHorariosInicio
{
get => listaHorariosInicio;
set
{
listaHorariosInicio = value;
NotifyPropertyChanged(nameof(ListaHorariosInicio));
}
}
public List ListaHorariosFin
{
get => listaHorariosFin;
set
{
listaHorariosFin = value;
NotifyPropertyChanged(nameof(ListaHorariosFin));
}
}

// Cargar los horarios de las instalaciones segun su id
public void CargarHorariosInstalacion(int idInstalacion)
{
var horarios = horariosInstaServicio.ObtenerHorariosPorInstalacionConInclude(idInstalacion);

ListaHorariosInicio = horarios.OrderBy(h => h.Inicio).ToList();
ListaHorariosFin = horarios.OrderBy(h => h.Fin).ToList();
}

класс, ucreservar
public partial class UCReservar : UserControl
{
private Usuario usuarioActual;
private IDContexto idContexto;
private MVMInstalaciones InstMVM;
private MVMReservar ReMVM;
private ReservaServicio reservaServ;
private List listaInstal;
private int idInstalacionEscogida;

public UCReservar(IDContexto idCont, Usuario usuActual)
{
InitializeComponent();
usuarioActual = usuActual;
idContexto = idCont;
inicializa();
}

private void inicializa()
{
ReMVM = new MVMReservar(idContexto);
InstMVM = new MVMInstalaciones(idContexto);
reservaServ = new ReservaServicio(idContexto);
this.DataContext = ReMVM;
}

private void ComboBoxInstalaciones_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (comboInstalaciones.SelectedItem is Instalacione idInst)
{
idInstalacionEscogida = idInst.IdInstalaciones;

ReMVM.CargarHorariosInstalacion(idInstalacionEscogida);
}
}

private void comboHorarioInicioInstalacion_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (comboHorarioInicioInstalacion.SelectedItem is Horario horarioSeleccionado)
{
comboHorarioFinInstalacion.ItemsSource = null;
comboHorarioFinInstalacion.IsEnabled = true;

var horasFin = idContexto.HorariosHasInstalaciones
.Include(hhi => hhi.IdHorariosNavigation)
.Where(hhi => hhi.IdInstalaciones == idInstalacionEscogida && hhi.IdHorariosNavigation.Inicio == horarioSeleccionado.Inicio)
.Select(hhi => new Horario
{
IdHorarios = hhi.IdHorariosNavigation.IdHorarios,
Inicio = hhi.IdHorariosNavigation.Inicio,
Fin = hhi.IdHorariosNavigation.Fin
})
.Distinct()
.OrderBy(h => h.Fin)
.ToList();

comboHorarioFinInstalacion.ItemsSource = horasFin;
comboHorarioFinInstalacion.DisplayMemberPath = "Fin";
comboHorarioFinInstalacion.SelectedValuePath = "IdHorarios";
}
else
{
comboHorarioFinInstalacion.IsEnabled = false;
comboHorarioFinInstalacion.ItemsSource = null;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -end-hours
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»