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
public jsonResult getDestinationList () {
List
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 ajaxSelectOptions: {type: "post"}
ao seu jqgrid.
Nas versões JQGrid mais recentes,
BuildSelect é chamado dentro do
$.
/yourcontroller/getDestinationList
com o caminho real para o seu controlador Action.
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