"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mi desplegable ASP.NET MVC JQGRID muestra un valor "indefinido"?

¿Por qué mi desplegable ASP.NET MVC JQGRID muestra un valor "indefinido"?

Publicado el 2025-03-23
Navegar:322

Why Does My ASP.NET MVC jqGrid Dropdown Show an

resolviendo el valor "indefinido" en ASP.NET MVC JQGRID Discustdowns

Al poblar dinámicamente los menores de JQGrid durante la edición de datos, aparece con frecuencia un valor "indefinido" no deseado. Esto se deriva de las inconsistencias entre la estructura de datos que JQGRID espera y el método de entrega de datos.

correcto formato de datos JqGrid:

El formato ideal para el valor del menú desplegable es: valor: "fe: fedEx; in: intime; tn: tnt"

con el método actual:

El enfoque actual utiliza ASP.NET MVC con JQuery $. Ajax () para obtener datos desplegables. A StringBuilder manipula los datos recuperados para que coincidan con el formato de JqGrid, pero persiste una entrada adicional "indefinida".

DESPUDIR Hallazgos:

La depuración de Firebug indica que las citas adicionales introducidas por sb.ToString () son ​​los culpables. JqGrid agrega sus propias citas, lo que lleva a citas dobles y al problema "indefinido".

una solución superior: usando dataUrl y buildSelect

en lugar de manipular directamente la propiedad value , una solución más robusta implica usar las propiedades de JqGrid dataUrl y bieldselect dentro de editOptions o SearchOptions . Estos permiten obtener datos y formateo de datos personalizados.

Ejemplo dataUrl Action:

public JsonResult GetDestinationList() {
    List allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}

ejemplo buildselect function:

buildSelect: function(data) {
    var s = '';
    if (data && data.length) {
        for (var i = 0, l = data.length; i 

actualizado editOptions :

{
    name: 'destinations',
    editable: true,
    edittype: 'select',
    editoptions: {
        dataUrl: '/YourController/GetDestinationList', // Replace with your controller action path
        buildSelect: function(data) {
            // ... (buildSelect function from above) ...
        }
    }
}

notas importantes:

  • puede usar json (alldestinations); sin jsonRequestBehavior.Allowget , pero necesitará agregar ajaxSelectOptions: {type: "publicar"} a sus opciones jqgrid.
  • en versiones JqGrid más nuevas,
  • buildSelect se llama dentro de $. Ajax () Success Handler, haciendo jQuery.Parsejson (data.responsetext) innecesario.
Este enfoque revisado proporciona un método más limpio, más eficiente y menos propenso a los errores para administrar los menores de JQGRID, eliminando el problema de valor "indefinido". Recuerde reemplazar

/YourController/getDestinationList con la ruta real a su acción de controlador.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3