¿Cómo se vincula el control Tilebar devexpress a la base de datos?
Luego, durante la inicialización, cárguelo con la información de la base de datos.
Cuando el usuario necesite realizar cambios, procese un poco los datos antes de que aparezca el cuadro de diálogo para que siempre se vea correcto.
Contraseña
Declarar dos mapas:
[csharp]Ver texto sin formato
int[]arLabelToWorkTypeId;
Diccionario ltint, int gtmapWorktypeId2LabelIndex = null
Cargar etiquetas desde la base de datos al cargar:
[csharp] Ver texto sin formato
Private void Your_Load(object sender , EventArgs e)
{
// TODO: esta línea de código carga datos en "schedulerDBDataSet". Tabla de recursos. Puede moverlo o quitarlo según sea necesario.
this . resources tableadapter . fill(this . Schedulerdbdataset . resources);
// TODO: esta línea de código carga datos en "schedulerDBDataSet". Calendario de citas. Puede moverlo o quitarlo según sea necesario.
this . /////////////////////////////////////////////////// /// ///////////////
Control de programación. ActiveViewType = DevExpress. programador extra. tipo de vista del programador.
Control de programación. Tipo de grupo = Tipo de grupo de programador. Recursos;
AdjustResourceHeaders();
cbView. EditValue = control del programador. ActiveViewType
cbGrouping. EditValue = control del programador. GroupType
}
Private void InitializeLabels()
{
este . tipo de trabajo tableadapter fill(este . Schedulerdbdataset . tipo de trabajo) ;
Etiquetas de tabla de datos = this. Schedulerdbdataset .
Si (etiqueta. Recuento de filas. Conteo == 0)
Retorno;
Control de programación. almacenamiento de citas. etiquetas clear();
Control de programación.
almacenamiento . etiquetas . comenzar actualización();
arLabelToWorkTypeId = new int[labels. filas.Count];
mapWorktypeId2LabelIndex = nuevo diccionario ltint, int gt();
for(int i = 0; i ltlabel.rows.count; i)
p>{
Color color = color. FromArgb(Int32.Parse(Tag.Rows[i]["Color"].ToString()));
String displayName = Etiqueta. Línea[i]["nombre"]. ToString();
cadena menuCaption = etiqueta. Línea[i]["nombre"]. ToString();
etiqueta de cita apt label = nueva etiqueta de cita (color, nombre para mostrar, título de menú);
Control de programación. almacenamiento . etiquetas . add(apt label);
arLabelToWorkTypeId[i] = int. Parse(Label. Row[i]["WorktypeID"].ToString());
mapWorktypeId2LabelIndex. Add(arLabelToWorkTypeId[i], I);
}
Control de programación. almacenamiento . citas . etiquetas . end update();
}
[csharp]Ver texto sin formato
control de programador nulo privado _ EditAppointmentFormShowing(remitente del objeto, AppointmentFormEventArgs e)
{
DevExpress. programador xtra . programador de control del programador = ((DevExpress. planificador xtra . Cita tmpAppointment = e
//Convertir a tipo de trabajo
int originalId = tmpAppointment. LabelId
int etiqueta idx = 0;
if(true == mapworktypeid 2 índice de etiqueta. TryGetValue(tmpAppointment. LabelId, out labelIdx))
{
tmpCita. LabelId = labelIdx
}
DevExpress.
Módulos de demostración xtra. formulario de cita personalizada = nuevo dev express. programador xtra. demostraciones. módulos. customappointmentform(programador, tmpAppointment, e. OpenRecurrenceForm); ShowDialog();
if (DialogResult. OK == e.DialogResult)
{
e.appointment . id de etiqueta];
}
Otro
{
e.appointment id de etiqueta = id original;
}
e.Processed=True;
}
Formulario final
{
. dispose();
}
}
//Crear uno nuevo
control de programador de anulación privado _ InitNewAppointment(remitente del objeto, AppointmentEventArgs e)
{
//Asigna el primer valor
e.appointment.