"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meu suspensão ASP.NET MVC JQGRID mostra um valor "indefinido"?

Por que meu suspensão ASP.NET MVC JQGRID mostra um valor "indefinido"?

Postado em 2025-03-23
Navegar:366

Why Does My ASP.NET MVC jqGrid Dropdown Show an

Resolvendo o valor "indefinido" no ASP.NET MVC JQGrid DropDowns

Ao preencher dinamicamente os suspensos JQGrid durante a edição de dados, um valor "indefinido" indesejado aparece freqüentemente. Isso decorre de inconsistências entre a estrutura de dados que o JQGrid espera e o método de entrega de dados.

correto JQGrid Data Format:

O formato ideal para o valor do suspensão é: valor: "Fe: fedEx; em: INTIME; TN: TNT"

Problema com o método atual:

A abordagem atual usa asp.net MVC com JQuery's $. Ajax () para buscar dados suspensos. A stringbuilder manipula os dados recuperados para corresponder ao formato do JQGrid, mas uma entrada extra "indefinida" persiste.

Deburging Asches:

depuração do Firebug indica que as citações extras introduzidas por sb.toString () são o culpado. O JQGrid adiciona suas próprias citações, levando a citações dobradas e a edição "indefinida".

uma solução superior: usando dataurl e buildSelect

em vez de manipular diretamente a propriedade value , uma solução mais robusta envolve o uso de JQGrid's dataurl e BuildSelect Eles permitem a busca e formatação de dados personalizados. exemplo dataurl

action:

public jsonResult getDestinationList () { List allDestinations = getAllDestinations (); Return json (AllDestinations, jsonRequestBehavior.allowget); }

public JsonResult GetDestinationList() {
    List allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}
função:

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

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

{ Nome: 'Destinos', editável: verdadeiro, Edittype: 'Selecione', Editoções: { DATAURL: '/yourcontroller/getDestinationList', // Substitua pelo seu caminho de ação do controlador BuildSelect: function (dados) { // ... (função BuildSelect de cima) ... } } }

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

você pode usar json (AllDestinations);

sem
    jsonRequestBehavior.allowget
  • , mas você precisará adicionar ajaxSelectOptions: {type: "post"} ao seu jqgrid. Nas versões JQGrid mais recentes, BuildSelect é chamado dentro do $.
  • Esta abordagem revisada fornece um método mais limpo, mais eficiente e menos propenso a erros para gerenciar suspensos JQGrid, eliminando o problema de valor "indefinido". Lembre -se de substituir /yourcontroller/getDestinationList com o caminho real para o seu controlador Action.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3