FORMATAR COLUNA EM MOEDA EM MVC

MOZARTJUNIOR 28/08/2017 15:18:04
#476053
Tenho uma view onde mostro valores, tenho uma coluna onde mostro um valor monetário e permito que o usuário altere esse valor, o problema é que a formatação em moeda só está acontecendo na primeira linha da tabela.
Meu script é assim
jQuery(function ($) {
$([ô]#item_pus_valor[ô]).maskMoney({ prefix: [ô]R$ [ô], allowNegative: false, thousands: [ô].[ô], decimal: [ô],[ô], affixesStay: false })
});
KERPLUNK 28/08/2017 15:47:43
#476055
Resposta escolhida
O seletor [Ô]#[Ô] se refere à ID de componente e você não pode ter múltiplos componentes com o mesmo ID. Atribua uma classe ao template do item e use o seletor [Ô].[Ô]:

$([ô].nome_da_sua_classe[ô]).maskMoney({ prefix: [ô]R$ [ô], allowNegative: false, thousands: [ô].[ô], decimal: [ô],[ô], affixesStay: false })


Mas tecnicamente você nem sequer deveria usar JQuery para isso...
MOZARTJUNIOR 28/08/2017 15:56:24
#476057
Fiz a alteração que vc sugeriu e ficou pior, nem mesmo o primeiro registro formata
KERPLUNK 28/08/2017 16:04:07
#476058
Verifique o console e veja se tem erros. Caso não saiba, tecla F12 no seu browser.
KERPLUNK 28/08/2017 16:04:33
#476059
E aliás, você adicionou a classe aos ítens da tabela?
MOZARTJUNIOR 28/08/2017 16:15:11
#476060
Não apresenta nenhum erro de script e todos os dados estão corretos. Na view a linha está assim
<td class=[Ô]col-md-1[Ô] style=[Ô]text-align: right;vertical-align:middle[Ô]>
@Html.EditorFor(modelItem => item.pus_valor, new { htmlAttributes = new { @class = [Ô]form-control col-md-3 col-sm-3 col-xs-3 text-right[Ô], data_val_number = [Ô] [Ô] } })
</td>
KERPLUNK 28/08/2017 16:17:12
#476061
@Html.EditorFor(modelItem => item.pus_valor, new { htmlAttributes = new { @class = [Ô]form-control col-md-3 col-sm-3 col-xs-3 text-right [txt-color=#e80000]meu-controle-valor[/txt-color][Ô], data_val_number = [Ô] [Ô] } })

$([ô].[txt-color=#e80000]meu-controle-valor[ô][/txt-color]).maskMoney({ prefix: [ô]R$ [ô], allowNegative: false, thousands: [ô].[ô], decimal: [ô],[ô], affixesStay: false })

Tente ENTENDER o que está acontecendo e não só copiar código...
MOZARTJUNIOR 28/08/2017 16:47:23
#476064
Entendi, não sabia que isso poderia ser feito. valeu funcionou.
KERPLUNK 28/08/2017 16:54:28
#476065
O seletor do JQuery, pode ser várias coisas:
#algo = você está se referindo à um controle específico com Id = [Ô]algo[Ô]. Exemplo:
<div id=[Ô]algo[Ô]>texto aqui</div>
$([Ô]#algo[Ô]).css({[Ô]font-weight[Ô]:[Ô]bold[Ô]}); // para o controle com id [Ô]algo[Ô], a fonte é negrito

.algo = você está se referindo à controles com a classe algo. Exemplo:
<div class=[Ô]algo[Ô]>texto aqui</div>
$([Ô].algo[Ô]).css({[Ô]font-weight[Ô]:[Ô]bold[Ô]}); // para os controles que possuam [Ô]algo[Ô] coimo classe, a fonte é negrito

algo = você está se referindo à controles do tipo, geralmente tags HTML. Exemplo:
<div>texto aqui</div>
$([Ô]div[Ô]).css({[Ô]font-weight[Ô]:[Ô]bold[Ô]}); // para os controles [Ô]div[Ô], a fonte é negrito

Você pode usar inclusive combinações:
$([Ô]tr.algo[Ô]).css({[Ô]font-weight[Ô]:[Ô]bold[Ô]}); // para controles do tipo tr e que contenham classe [Ô]algo[Ô], a fonte é negrito

Os seletores podem ter vários encadeamentos e podem ficar bem complicados conforme o que você quer fazer.
Tópico encerrado , respostas não são mais permitidas