Cancelar a execução de um evento
Olá
Estou fazendo a chamada de um evento do AspGrid. Porém dentro desse evento efetuo uma validação, dependendo do resultado dessa valdiação eu quero abortar a execução do evento. Qual é o comando que posso utilizar. Por exemplo no Delphi eu executo o comando Abort. Obs. Estou utilizando C#.
Obrigado.
Estou fazendo a chamada de um evento do AspGrid. Porém dentro desse evento efetuo uma validação, dependendo do resultado dessa valdiação eu quero abortar a execução do evento. Qual é o comando que posso utilizar. Por exemplo no Delphi eu executo o comando Abort. Obs. Estou utilizando C#.
Obrigado.
Eduardo Pereira
Curtidas 0
Respostas
Luiz Maia
08/06/2009
Me manda um trecho de seu codigo por favor, de onde quer parar a execução.
Aguardo
Att
Luiz Maia
GOSTEI 0
Eduardo Pereira
08/06/2009
Ok
Segue o código:
protected void grdEstoque_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
string prd_it_id = "0";
string vlm_it_id = "0";
string nfo_it_id = "0";
int qtde_disponivel = 0;
int qtde_reservar = 0;
for (int i = 0; i <= grdEstoque.VisibleRowCount - 1; i++)
{
if (grdEstoque.Selection.IsRowSelected(i))
{
prd_it_id = grdEstoque.GetRowValues(i, "EST_IT_PRD_ID").ToString();
vlm_it_id = grdEstoque.GetRowValues(i, "VLM_IT_ID").ToString();
nfo_it_id = grdEstoque.GetRowValues(i, "NFO_IT_ID").ToString();
qtde_disponivel = Convert.ToInt32(grdEstoque.GetRowValues(i, "DISPONIVEL").ToString());
qtde_reservar = Convert.ToInt32(grdEstoque.GetRowValues(i, "EST_IT_QTDE_RESERVAR").ToString());
}
}
if (qtde_reservar > qtde_disponivel)
{
MessageBox.Show("A quantidade a ser reservada tem que ser menor ou igual a quantidade disponível", "Erro na quantidade a reservar", MessageBoxButtons.OK);
--- AQUI DESEJO ABORTAR
}
....
...
...
}
Segue o código:
protected void grdEstoque_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
string prd_it_id = "0";
string vlm_it_id = "0";
string nfo_it_id = "0";
int qtde_disponivel = 0;
int qtde_reservar = 0;
for (int i = 0; i <= grdEstoque.VisibleRowCount - 1; i++)
{
if (grdEstoque.Selection.IsRowSelected(i))
{
prd_it_id = grdEstoque.GetRowValues(i, "EST_IT_PRD_ID").ToString();
vlm_it_id = grdEstoque.GetRowValues(i, "VLM_IT_ID").ToString();
nfo_it_id = grdEstoque.GetRowValues(i, "NFO_IT_ID").ToString();
qtde_disponivel = Convert.ToInt32(grdEstoque.GetRowValues(i, "DISPONIVEL").ToString());
qtde_reservar = Convert.ToInt32(grdEstoque.GetRowValues(i, "EST_IT_QTDE_RESERVAR").ToString());
}
}
if (qtde_reservar > qtde_disponivel)
{
MessageBox.Show("A quantidade a ser reservada tem que ser menor ou igual a quantidade disponível", "Erro na quantidade a reservar", MessageBoxButtons.OK);
--- AQUI DESEJO ABORTAR
}
....
...
...
}
GOSTEI 0
Luiz Maia
08/06/2009
Ola Eduardo,
Tem varias formas de abortar a execução.
Se for dentro de um loop, no seu caso o for, vc consegue usar o "break";
Mas ja que é fora do for, sugiro usar um bloco de instrução que cospe uma exceção, do tipo: "throw".
Outra forma seria dentro do metodo RowUpdanting, vc chamar um outro metodo que retorna algo, não void.
Assim caso a quantidade 01 seja maior que a quantidade 02, vc retorna true ou false e para a execução.
Me avise se funcionou, ok?
Tente usar o throw, é o mais sugerido.
Aguardo
Att
Luiz Maia
GOSTEI 0
Eduardo Pereira
08/06/2009
Ok
Gerei uma excessão e funcionou sim.
Obrigado.
Gerei uma excessão e funcionou sim.
Obrigado.
GOSTEI 0
Luiz Maia
08/06/2009
Blz, Precisando é do falar.
Abraços
Att
Luiz Maia
GOSTEI 0