首页 > 解决方案 > 我怎样才能让我的 Syncfusion 卡片布局尊重我的验证而不是提前?

问题描述

我对 Syncfusion 库有些陌生,我想使用一个名为 CardLayout 的 Syncfusion 元素,我在其中放置了卡片视图并使用了一个名为 VisibleCardIndexChanged 的​​事件,但我想要验证当前卡片是否已用其中的字段回答,而不是如何做那部分。

private async void layoutCard_VisibleCardIndexChanged(object sender, VisibleCardIndexChangedEventArgs e)
{


    /**radio Groups **/
    SfRadioButton radio = groupCalidad.CheckedItem;
    SfRadioButton radioApp = groupApp.CheckedItem;
    SfRadioButton radioDiseno = groupDiseno.CheckedItem;
    SfRadioButton radioBeneficio = groupBeneficio.CheckedItem;
    SfRadioButton radioLogin = groupLogin.CheckedItem;
    SfRadioButton radioPerfiles = groupPerfiles.CheckedItem;
    SfRadioButton radioPanel = groupPanel.CheckedItem;
    SfRadioButton radioIdiomas = groupIdiomas.CheckedItem;
    SfRadioButton radioEstado = groupEstado.CheckedItem;
    SfRadioButton radioMantenimiento = groupMantenimientoRb.CheckedItem;
    SfRadioButton radioDoc = groupDocumentacion.CheckedItem;
    SfRadioButton radioTipo = groupTipo.CheckedItem;
    SfRadioButton radioEspecial = groupEspecializada.CheckedItem;
    SfRadioButton radioDispo = groupDispo.CheckedItem;

    /** Check Buttons **/



    int indice = layoutCard.VisibleCardIndex+1;

    switch (indice)
    {
        case 19:
            if (radio == null)
            {
                return;
               //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);

            }
            break;
        case 18:
            if (radioApp == null)
            {
                return;
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 17:
            if (radioDiseno == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 16:
            if (radioBeneficio == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 15:
            if (radioLogin == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 14:
            if (radioPerfiles == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 13:
            if (radioPanel == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 12:
            if (radioIdiomas == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 11:
            if (radioEstado == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 10:
            if (chkNoti.IsChecked == false && chkGeo.IsChecked == false && chkPagoLinea.IsChecked == false && chkLogotipo.IsChecked == false &&
                chkVideo.IsChecked == false && chkStream.IsChecked == false && chkChat.IsChecked == false && chkPaises.IsChecked == false &&
                chkSensores.IsChecked == false && chkBusqueda.IsChecked == false && chkEncript.IsChecked == false && chkInteraccion.IsChecked == false
                && chkStats.IsChecked == false)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(6);
                Calculo(indice);
            }
            break;
        case 9:
            if (radioMantenimiento == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 8:
            if (radioDoc == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 7:
            if (radioTipo == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 6:
            if (radioEspecial == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 5:
            if (chkCamaras.IsChecked == false && chkGPS.IsChecked == false && chkBarras.IsChecked == false && chkHuellas.IsChecked == false &&
                chkMicrofono.IsChecked == false && chkImpresora.IsChecked == false && chkRaspberry.IsChecked == false && chkOtros.IsChecked == false)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 4:
            if (chkRedes.IsChecked == false && chkERP.IsChecked == false && chkCRM.IsChecked == false && chkPuntoVenta.IsChecked == false &&
                chkOtroExterno.IsChecked == false)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 3:
            if (radioDispo == null)
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 2:
            if (txaRequisitos.Text == null || txaRequisitos.Text.Equals("") || string.IsNullOrEmpty(txaRequisitos.Text))
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
            }
            break;
        case 1:
            if (string.IsNullOrEmpty(frmName.Text) || string.IsNullOrEmpty(frEmail.Value.ToString()) || string.IsNullOrEmpty(frmPhone.Value.ToString())
                || string.IsNullOrEmpty(frmEmpresa.Text) || string.IsNullOrEmpty(frmLegal.Text) || string.IsNullOrEmpty(frmEmpleados.Value.ToString())
                || string.IsNullOrEmpty(frmExperiencia.Text) || string.IsNullOrEmpty(frmPais.Text) || string.IsNullOrEmpty(frmFecha.Date.ToString())
                || string.IsNullOrEmpty(frmHora.Time.ToString()) || string.IsNullOrEmpty(frmCal.Value.ToString()) || (rbtZoom.IsChecked == false && rbtMeet.IsChecked == false && rbtOtro.IsChecked == false))
            {
                //e.cancel = true;
                Error.Text = "Error, No se puede avanzar, falta contestar";
                await Error.FadeTo(0, 500);
                await Error.FadeTo(1, 300);
                await scrollMain.ScrollToAsync(0.0, 800, true);
                return;
            }
            else
            {
                Error.Text = "";
                await BarraProgreso(5);
                Calculo(indice);
                btnCotizar.IsVisible = true;
            }
            break;
        case 0:

            break;
        default:
            break;
    }



}

我尝试使用 e.cancel 但仅适用于 VisibleCardIndexChanging 但在该事件中执行了多次操作,如果每张卡的形式是否经过验证,并且使用 VisibleCardIndexChanging 事件,我只希望执行一次使我的计算翻倍或三倍的倍数。

标签: c#.netxamarinxamarin.formssyncfusion

解决方案


我们已经检查了报告的查询。您可以通过添加VisibleCardIndex不等于前一个卡片索引的条件在执行多次时跳过VisibleCardIndexChanging事件中的操作,如下代码所示。

private int previousCardIndex = -1;

private void SfCardLayout_VisibleCardIndexChanging(object sender, VisibleCardIndexChangingEventArgs e)
{
    if (cardLayout.VisibleCardIndex != previousCardIndex)
    {
        previousCardIndex = cardLayout.VisibleCardIndex;

         // your code.
    }
}

我们将在我们这边内部分析这个问题。同时,您可以使用上述解决方案。


推荐阅读