Pessoal, tenho na imagem abaixo o campo Cód. Produto, esses valores estão em um DataSet. Gostaria que quando o usuário selecionasse o código, fosse preenchido o descrição do produto também, como faço isso?
<select onchange="onChangeCombo(this)" class="filtro form-control" name="codProd" id="codProd" dataset="dsConsultaProd" datasetkey="Codigo" datasetvalue="Codigo" addBlankLine="true"></select>
<input type="text" name="DescProd" id="DescProd" class="form-control" readonly="readonly" />
<input type="text" name="UM" id="UM" class="form-control" />
function onChangeCombo(combo) {
var Codigo = combo.value;
var c1 = DatasetFactory.createConstraint("Codigo", Codigo, Codigo, ConstraintType.MUST);
var constraints = new Array(c1);
var returnFields = new Array("Descri");
var produto = DatasetFactory.getDataset("dsConsultaProd", returnFields, constraints, null);
var index = combo.id.substring(combo.id.indexOf('___') + 3);
var descricaoProduto = produto.getValue(0, "Descri");
$('#DescProd___' + index).val(descricaoProduto);
}
O dataset que utilizo é o dsConsultaProd, campos: Codigo, Descri e UM
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Boa tarde Quemuel,
você pode fazer isso consultando o dataset no evento de onChange do select/combo:
//Adicione esse script no seu formulário para utilizar consultas a Datasets
<script type="text/javascript" src="/webdesk/vcXMLRPC.js"></script>
<select onchange="onChangeCombo(this)" class="filtro form-control" name="cod_prod" id="cod_prod" dataset="produtos" datasetkey="codProduto" datasetvalue="codProduto" addBlankLine="true"></select>
function onChangeCombo(combo) {
var Codigo = combo.value;
var c1 = DatasetFactory.createConstraint("Codigo", Codigo, Codigo, ConstraintType.MUST);
var constraints = new Array(c1);
var returnFields = new Array("Descri", "UM");
var produto = DatasetFactory.getDataset("dsConsultaProd", returnFields, constraints, null);
var index = combo.id.substring(combo.id.indexOf('___') + 3);
var descricaoProduto = produto.values[0]["Descri"];
var unidadeMedida = produto.values[0]["UM"];
$('#DescProd___' + index).val(descricaoProduto);
$('#UM___' + index).val(unidadeMedida);
}
Caso você não esteja usando o value do select/combo para outra coisa, você pode definir o value do combo como sendo a descrição do produto, e alimentar o campo também no onChange:
<select onchange="onChangeCombo(this)" class="filtro form-control" name="cod_prod" id="cod_prod" dataset="produtos" datasetkey="codProduto" datasetvalue="descProduto" addBlankLine="true"></select>
function onChangeCombo(combo) {
var descricaoProduto = combo.value;
var index = combo.id.substring(combo.id.indexOf('___') + 3);
$('#desc_produto___' + index).val(descricaoProduto);
}
Ou você pode também trocar o select por um campo tipo zoom e alimentar a descrição quando selecionar o item do zoom.
@Diogo, adicionei na pergunta o código que fiz, não deu certo! Queria adicionar nos scripts também o campo UM. Abraços!
Opa, desculpe Quemuel, quando se usa dataset num js de formulário a sintaxe é um pouco diferente. Alterei o código da resposta.
Lembre que para utilizar Datasets em um formulário precisa adiconar o script /webdesk/vcXMLRPC.js
Show Diogo, funcionou 100%! Abs!
Diogo, bom dia! Hj que percebemos aqui. Quando adicionamos uma outras linhas o campo $('#UM___' + index).val(unidadeMedida);
sempre pega o mesmo valor, por exemplo temos os produto 000012(UM: LT) e 000013(UM: KG), para os dois produtos eles sempre pega o KG