Django REST Framework - ListSerializer - Actualizaciones Múltiples

Imagen
 Se muestra un ejemplo, de como realizar la implementación de Múltiples actualizaciones en una sola petición , es decir enviando una lista de objetos, y usando la clase ListSerializer  realizamos las actualizaciones (inserciones u eliminaciones). El modelo para el ejemplo La Vista      def   post ( self ,  request ):          """ Ejemplo de manejo de listas en Serializer                     Para este ejemplo asumimos lo siguiente:           Se tienen que enviar todos los datos existentes de los empleados en el JSON ya que           se comparara con la base de datos y :            1.- Si se encuentran se actualizan los datos,            2.- Si no existen en la base de datos  se crean,            3.- Si se encuentran en la base de datos, pero no fueron pasados en el JSON se elimnan.          """          # Obtener el  JSON.          data  =  request .data          # Obtener los datos de la base de datos                  emp  =  Employes . objects . all ()   

BarEditItem de DevExpress no refresca el Item seleccionado.

Antecedentes.

El problema con este control (un barEditItem con un ImageCombobox  como Editor) con  valores ya cargados, era que al  seleccionar algún valor este no era mostrado al usuario (Interfaz) sin embargo al consultar el valor seleccionado si se tenia cargado.

Solución.

Al estar investigando, observo que varios tenían este problema sin embargo en la pagina oficial de devexpress  indicaban que para seleccionar un valor simplemente había que utilizar la propiedad Editvalue del control
barEditItem1.EditValue 
sin embargo en mi caso no funcionaba.

En realidad la solución es muy simple, aunque ni la documentación de DevExpress lo menciona, simplemente  hay que convertir  al tipo de valor que se asigna a Editvalue, tal como este al momento de agregarlo al repositorio, ejemplo (winForm):

using DevExpress.XtraEditors;        
private void Form1_Load(object sender, EventArgs e)
 {
repoItemImgCmb1.Items.Add(new Controls.ImageComboBoxItem("uno",1,0));
repoItemImgCmb1.Items.Add(new Controls.ImageComboBoxItem("dos"2,0));
repoItemImgCmb1.Items.Add(new Controls.ImageComboBoxItem("tres"30));
//Los siguientes 2 items no funcionaran si se tratan como integer, habrá que covertirlos a string
repoItemImgCmb1.Items.Add(new Controls.ImageComboBoxItem("cuatro""cuatro",0));
repoItemImgCmb1.Items.Add(new Controls.ImageComboBoxItem("cinco","cinco",0));
}
Para seleccionar alguno de los items:
       private void buttonEdit1_EditValueChanged(object sender, EventArgs e)
        {
            //Solo aplica para los tres primeros items
            barEditItem1.EditValue = Convert.ToInt32(buttonEdit1.Text);
        }
Como se observa en el código anterior solo funcionara para los tres primeros valores.
Sin embargo con esto ya se visualiza lo seleccionado al usuario.
NOTA. El ejemplo de los items con diferentes tipos solo fue para representar el problema, sin embargo para poder seleccionar todos los valores , al momento de agregar los items pueden tratarlos todos como un solo tipo,como string, y al asignarle un valor a la propiedad Editvalue del BarItem, este quedaría:  barEditItem1.EditValue =buttonEdit1.Text.

Comentarios

Entradas populares de este blog

Django. [Errno 10013] Intento de Acceso a un Socket no Permitido por sus permisos de acceso.

Crystal Reports para VS2010. El Texto Restante no parece se parte de la Formula.

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)