当保存按钮被点击时避免重复

本文关键字:保存 按钮 | 更新日期: 2023-09-27 18:04:07

我使用c# 4.0和SQL Server 2008 R2,我有一个简单的按钮点击调用一个函数,将数据保存到数据库和重定向页面。

问题是当客户端单击此保存按钮上的多个时,那么我将多个项目也保存到数据库中。

我想避免客户端犯错误,这意味着客户端只能做1个clic = 1个保存数据。

  <dx:ASPxButton ID="ASPxButton_save" runat="server" Image-Url="~/images/Icon/Good-or-Tick-icon.png" Text="Enregistrer"  Width="110px" onclick="ASPxButton_save_Click"  ValidationGroup="Savebouton"> 
                                                 </dx:ASPxButton>
 protected void ASPxButton_save_Click(object sender, EventArgs e)
    {
        string ErrPos = "";
        try
        {
            ErrPos = "Affct CP DEST";
            string FA_Choisi = ASPxTextBox_CP_dest.Text.Substring(0, 2);
            string CLIENT_de_FA = ClientId.Substring(0, 2);
            List<string> ClotList_FA = new List<string>();
            ErrPos = "Affct Trans";
            foreach (DataRow myRow in oOrdre_BL.Get_Tranporteur(ClientId).Tables["Le_Transporter"].Rows)
            {
                ClotList_FA.Add(myRow["LIBELLE"].ToString());
            }
            Pers_Client_Entrp oPersclientEntrp = GetOPersclientEntrp();
            Pers_Ordre oPersOrdr = new
.......
  if (ASPxCheckBox_NewDesti.Checked)
            {   
                string ResTemp = oDest_BL.Compare_Dest(ClientId, ASPxTextBox_Desti_ID.Text, ASPxTextBox_RS_NOM_dest.Text, ASPxTextBox_ADRESSE_dest.Text);
                if (!String.IsNullOrWhiteSpace(ResTemp))
                {
                    lbl_err.Text = ResTemp;
                }
                else
                {
                    Pers_Dest TheDest = new Pers_Dest();
                    TheDest.CodeDest = ASPxTextBox_Desti_ID.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.CodeClient = ClientId;
                    TheDest.RaisonSoc = ASPxTextBox_RS_NOM_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.Adresse = ASPxTextBox_ADRESSE_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.Cp = ASPxTextBox_CP_dest.Text;
                    TheDest.Ville = ASPxComboBox_VILLE_dest.Text;
                    TheDest.Pays = ASPxComboBox_PAYS_dest.Value.ToString();
                    TheDest.Tel = ASPxTextBox_TEL_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.Fax = ASPxTextBox_FAX_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.Email = ASPxTextBox_EMAIL_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.Insee = ASPxTextBox_INSEE_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    TheDest.Siret = ASPxButton_SIRET_dest.Text.Replace('-', ' ').Replace('''', ' ');
                    oDest_BL.CrUp_Dest(TheDest, true);
                    oPersOrdr.Ville = ASPxComboBox_VILLE_dest.Text;
                    Save_Part(oPersOrdr, oPersclientEntrp, OrdreID);
                }
            }
            else
            {
                oPersOrdr.Ville = ASPxTextBox_VILLE_dest.Text.Replace('-', ' ').Replace('''', ' ');
                Save_Part(oPersOrdr, oPersclientEntrp, OrdreID);
            }
 catch (Exception ex)
        {
            lbl_err.Text = ex.Message;
            if (ex.InnerException != null) { lbl_err.Text += "-->" +ex.InnerException.Message; }
            Outils_IHM.SendingEmail("Save Odre --> Err Position: " + ErrPos + "-----" + lbl_err.Text, ClientId);
        }
  private void Save_Part(Pers_Ordre oPersOrdr, Pers_Client_Entrp oPersclientEntrp, string OrdreID)
    {
        oOrdre_BL.SaveUpdt_Ordre_BL(oPersOrdr, OrdreID);
        string QuelleID = TempId;
        if (!String.IsNullOrWhiteSpace(OrdreID))
        { QuelleID = OrdreID; }
        if (oPersclientEntrp.TypPrint == "Zebra")
        { Response.Redirect("../Print/BonEticket_Web.aspx?ConnPrint=UnDirect&OdreID=" + QuelleID + "&CountOrdre=" + ASPxTextBox_NBR_COLIS.Text + "&TypeAR=" + TypeEnlev, false); }
        else
        { Response.Redirect("../Print/BonEticket_Web.aspx?OdreID=" + QuelleID + "&CountOrdre=" + ASPxTextBox_NBR_COLIS.Text + "&TypeAR=" + TypeEnlev, false); }
        Context.ApplicationInstance.CompleteRequest();
    }

我有一个想法,当用户点击这个按钮时,它会调用客户端函数来禁用它。但我不知道它是如何工作的,如果我想。

当保存按钮被点击时避免重复

您可以使用下面提到的代码作为ref.

    <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        var submit = 0;
        function CheckIsRepeat() {
            if (++submit > 1) {
                alert('An attempt was made to submit this form more than once; this extra attempt will be ignored.');
                return false;
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick="return CheckIsRepeat();" />
    </div>
    </form>
</body>
</html>

在保存数据到数据库之前禁用按钮,然后保存数据,然后清除控件&然后再次启用按钮

  <dx:ASPxButton ID="ASPxButton_save" runat="server" Image-Url="~/images/Icon/Good-or-Tick-icon.png" Text="Enregistrer" ClientInstanceName="ASPxButton_save"  Width="110px" onclick="ASPxButton_save_Click"  ValidationGroup="Savebouton"> 
                                 <ClientSideEvents Click ="function(s,e) { MyBtnClick(s,e); } " />                   
                                                 </dx:ASPxButton>
   function MyBtnClick(s, e) {
         if (ASPxClientEdit.AreEditorsValid())
                ASPxButton_save.SetVisible(false);
 }