Array
(
)

Problemas em retornar valor para funções Javascript

Pjava
   - 07 out 2013

Não sei se consigo explicar a dúvida, já que vai ficar difícil enviar todo o CF para vocês, mas vou tentar com o que eu tenho. O problema acontece em uma função JS que tenho. Ela recebe um parâmetro do Code Behind. Tive que alterar a função para ajustar à minha necessidade. Essa alteração, foi um IF que receberia dois parâmetros, ou um ou outro, nunca ambos. Bem, o parâmetro que já funcionava continua funcionando, mas o novo não funciona, ele dá o erro de: Valor is undefined. Valor é a variável que recebe o cara e quando ela não recebe, dá esse erro, que significa que a variável é null, sem nada. Estou postando o CF do JS e do CB. Quando ele chama doACAOMENUNFI é que dá pau. doACAOMENU é semelhante a doACAOMENUNFI, apenas com nomes diferentes, mas é a mesma função e ela funciona. É a mesma coisa, retirei para não ficar um post linguiça. O segredo está em OpenActions.
#Código
var actionID = "";
var actionsMenu = "";
var actionElement = null;
function OpenActions(s, e) {
if (cbAcoes.InCallback())
return;
if (actionID != s.uniqueID || actionsMenu == "") {
actionElement = s;
actionID = s.uniqueID;
cbAcoes.PerformCallback(e);
}
else
doACAOMENU();
}
function ActionOnCompleteCallBack(s, e) {
actionsMenu = e.result;
}
function ActionOnEndCallBack(s, e) {
if (actionsMenu == ''cpItens'')
doACAOMENU();
else if(actionsMenu == ''cpItensNFI'')
doACAOMENUNFI();
}
function doACAOMENUNFI() {
if (actionsMenu != "") {
for (ix = 0; ix < apmItensNFI.GetItemCount(); ix++) {
mni = apmItensNFI.GetItem(ix);
mni.SetVisible(false);
}
if (actionsMenu == ''NOK_rejeitado'') {
alert(''Verificar motivo da rejeição no Portal de Serviços da operadora.'');
actionsMenu = "";
return;
}
if (actionsMenu == ''NOK_EmAnalise'') {
alert(''A operadora ainda não finalizou a análise dessa conta.'');
actionsMenu = "";
return;
}
str = actionsMenu.split('','');
console.log(str);
param = cbAcoes.cpPARAM;
console.log(param);

var valor = "";
for (ix = 0; ix < str.length; ix++) {
console.log(ix);
mni = apmItensNFI.GetItemByName(str[ix]);
console.log(mni);
mni.SetVisible(true);
console.log(str[ix]);
valor = eval("cbAcoes." + str[ix]);
mni.SetNavigateUrl(valor.replace("{0}", param));
}
if (actionElement != null)
apmItensNFI.ShowAtElement(actionElement);
else
apmItensNFI.ShowAtElementByID(actionID);
}
}
function oncloseMenu(s, e) {
actionElement = null;
actionID = "";
}
function VisualizarItens(s, e) {
param = cbAcoes.cpPARAM;
cbpPainelControle.PerformCallback(''VisualizarItens_'' + param);
}

Aqui está o meu call_back para o cbAcoes.
#Código
protected void cbAcoes_Callback(object source, DevExpress.Web.ASPxCallback.CallbackEventArgs e)
{
string _tipo = null;
string GuiaPrest = null;
string _codItemNFI = null;
DataTable dtContaGuia = null;
if (_filtroSelecionado == enFiltroPesquisa.NotaFiscal)
{
//Tipo Nota fiscal
_tipo = "N";
_codItemNFI = e.Parameter.ToString();
}
else
{
//Tipo outros
_tipo = "O";
GuiaPrest = e.Parameter.ToString();
}
// Recupera a configuracao do menu inicializado no método InicializaMenuAcoes()
if (menus == null && ViewState["menuAcao"] != null)
menus = (NameValueCollection)ViewState["menuAcao"];
String[] AcaoMenu = null;
string resultado = null;
switch (_tipo)
{
case "N":
dtContaGuia = DAL_Pesquisa.getStatusItemNFI_Menu(_codItemNFI);
break;
case "O":
dtContaGuia = DAL_Pesquisa.getStatusGuiaPrestador_Menu(GuiaPrest);
break;
}

if (dtContaGuia != null && dtContaGuia.Rows.Count > 0)
{
if (dtContaGuia.Rows[0]["COD_STATUS_CONCILIA"].ToString().Equals("6"))
resultado = "NOK_EmAnalise";
else if (dtContaGuia.Rows[0]["COD_STATUS_CONCILIA"].ToString().Equals("7"))
resultado = "NOK_rejeitado";

else if(_tipo == "O")
AcaoMenu = new String[] { "cpItens" };
else if(_tipo == "N")
AcaoMenu = new String[] { "cpItensNFI" };
}
else
throw new ApplicationException("A operadora não finalizou a análise dessa conta.");
StringBuilder sbmenu = new StringBuilder();
cbAcoes.JSProperties.Clear();
if (AcaoMenu != null)
{
foreach (String key in AcaoMenu)
{
sbmenu.AppendFormat(",{0}", key);
cbAcoes.JSProperties.Add(key, menus[key]);
}
e.Result = sbmenu.ToString().Substring(1);
switch (_tipo)
{
case "N":
cbAcoes.JSProperties.Add("cpPARAM", _codItemNFI);
break;
case "O":
cbAcoes.JSProperties.Add("cpPARAM", GuiaPrest);
break;
}
}
else
{
e.Result = resultado;
cbAcoes.JSProperties.Add("cpPARAM", null);
}
}

No page load eu chamo esse cara
#Código
private void InicializaMenuAcoes()
{
menus = new NameValueCollection();
apmContasGuias.Items.Clear();
apmItensNFI.Items.Clear();
AddMenuItemNFIAcoes("cpItensNFI", "Visualizar Itens", "javascript:ConteudoItem();");
AddMenuContasGuiasAcoes("cpItens", "Visualizar Itens", "javascript:VisualizarItens();");
ViewState["menuAcao"] = menus;
}

ConteudoItens e VisualizarItens são submétodos de um call_back, o principal(mas não é o cbAcoes_Callback)
#Código
protected void cbpPainelControle_Callback(object sender, CallbackEventArgsBase e)
{
if (e.Parameter.Contains("VisualizarConta"))
{
string id = e.Parameter.Substring((e.Parameter.LastIndexOf(''_'')) + 1);
CarregaContasGuia(Ametista.CodigoStatusConciliacao.ContasPorMotivoGlosa, id);
return;
}
if (e.Parameter.Contains("VisualizarItens"))
{
pagContas = gvContasGuias.PageIndex;
string idGuiaPres = e.Parameter.Substring((e.Parameter.LastIndexOf(''_'')) + 1);
ListaDetalhesConta(idGuiaPres, false);
return;
}
if (e.Parameter.Contains("ConteudoItem"))
{
pagContas = gvItemNotaFiscal.PageIndex;
string idItem = e.Parameter.Substring((e.Parameter.LastIndexOf(''_'')) + 1);
ListaDetalhesContaNFI(idItem, false);
return;
}
continua mais métodos nesse callback
Se precisar mais informações, favor me avisar, senão fica uma linguiça enorme e até ruim de ler

Pjava
   - 07 out 2013

Apenas para ajudar, essa linha está vindo undefined.

param = cbAcoes.cpPARAM;

0
|
0

Pjava
   - 11 out 2013

Pessoal, creio(ainda não testei) que o problema esteja em eu querer usar um evento de callback para duas coisas distintas. Creio que se eu criar um evento para cada situação, tipo, um para cpItens e outro para cpItensNFI, resolve. Podem fechar o post que quando eu fizer(não será agora), posto se não deu certo, abrindo outra thread para ajuda. Obrigado.

0
|
0

José
   - 11 out 2013

Já que o problema foi sanada. tópico concluído.

0
|
0