C# 单击“保存”按钮时避免重复
我使用C#4.0和SQLServer2008R2,我有一个简单的按钮点击,调用一个函数,将数据保存到数据库中并重定向页面 问题是,当客户端在这个保存按钮上单击多个项目时,我也会将多个项目保存到数据库中 我想避免客户端出错,这意味着客户端只能执行1次clic=1次保存数据C# 单击“保存”按钮时避免重复,c#,save,C#,Save,我使用C#4.0和SQLServer2008R2,我有一个简单的按钮点击,调用一个函数,将数据保存到数据库中并重定向页面 问题是,当客户端在这个保存按钮上单击多个项目时,我也会将多个项目保存到数据库中 我想避免客户端出错,这意味着客户端只能执行1次clic=1次保存数据 <dx:ASPxButton ID="ASPxButton_save" runat="server" Image-Url="~/images/Icon/Good-or-Tick-icon.png" Text="Enre
<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();
}
受保护的无效ASPxButton_保存_单击(对象发送者,事件参数e)
{
字符串ErrPos=“”;
尝试
{
ErrPos=“影响CP目的地”;
字符串FA_Choisi=aspxtbox_CP_dest.Text.Substring(0,2);
字符串CLIENT_de_FA=ClientId.Substring(0,2);
List ClotList_FA=新列表();
ErrPos=“影响传输”;
foreach(oOrdre_BL.Get_transporteur(ClientId)中的DataRow myRow.Tables[“Le_Transporter”].Rows)
{
ClotList_FA.Add(myRow[“LIBELLE”].ToString());
}
Pers_Client_Entrp opersclientrp=getopersclientrp();
Pers_Ordre operator dr=新
.......
如果(ASPxCheckBox_NewDesti.Checked)
{
string ResTemp=oDest_BL.Compare_Dest(ClientId、aspxtbox_Desti_ID.Text、aspxtbox_RS_NOM_Dest.Text、aspxtbox_address_Dest.Text);
如果(!String.IsNullOrWhiteSpace(ResTemp))
{
lbl_err.Text=ResTemp;
}
其他的
{
Pers_Dest TheDest=新Pers_Dest();
dest.CodeDest=aspxtbox\u Desti\u ID.Text.Replace('-','').Replace('\'','');
TheDest.CodeClient=ClientId;
dest.raisensoc=aspxtbox\u r\u NOM\u dest.Text.Replace('-','').Replace('\'');
dest.adrese=aspxtbox\u adrese\u dest.Text.Replace('-','').Replace('\'');
dest.Cp=aspxtbox\u Cp\u dest.Text;
dest.Ville=ASPxComboBox\u Ville\u dest.Text;
dest.Pays=ASPxComboBox_Pays_dest.Value.ToString();
dest.Tel=aspxtbox\u Tel\u dest.Text.Replace('-','').Replace('\'');
dest.Fax=aspxtbox\u Fax\u dest.Text.Replace('-','').Replace('\'');
dest.Email=aspxtbox\u Email\u dest.Text.Replace('-','').Replace('\'');
dest.Insee=aspxtbox\u Insee\u dest.Text.Replace('-','').Replace('\'','');
dest.Siret=ASPxButton\u Siret\u dest.Text.Replace('-','').Replace('\'','');
oDest_BL.CrUp_Dest(最坏的,正确的);
oPersOrdr.Ville=ASPxComboBox\u Ville\u dest.Text;
保存零件(oPersOrdr、OpersClientRp、OrdreID);
}
}
其他的
{
oPersOrdr.Ville=aspxtbox\u Ville\u dest.Text.Replace('-','').Replace('\'');
保存零件(oPersOrdr、OpersClientRp、OrdreID);
}
捕获(例外情况除外)
{
lbl_err.Text=除信息外;
如果(ex.InnerException!=null){lbl_err.Text+=“-->”+ex.InnerException.Message;}
Outils_IHM.SendingEmail(“保存Odre-->错误位置:“+ErrPos+”----“+lbl_Err.Text,ClientId”);
}
私有void保存部分(Pers\u Ordre oPersOrdr、Pers\u Client\u Entrp opersclientrp、string或reid)
{
oOrdre_BL.SaveUpdt_Ordre_BL(oPersOrdr,OrdreID);
字符串QuelleID=TempId;
如果(!String.IsNullOrWhiteSpace(OrdreID))
{QuelleID=OrdreID;}
如果(OperatsClientRP.TypPrint==“斑马”)
{Response.Redirect(../Print/BonEticket_Web.aspx?ConnPrint=unddirective&OdreID=“+QuelleID+”&CountOrdre=“+ASPxTextBox_NBR\u COLIS.Text+”&TypeAR=“+TypeEnlev,false);}
其他的
{Response.Redirect(../Print/BonEticket_Web.aspx?OdreID=“+QuelleID+”&CountOrdre=“+aspxtbox_NBR_COLIS.Text+”&TypeAR=“+TypeEnlev,false);}
Context.ApplicationInstance.CompleteRequest();
}
我有一个想法,当用户点击这个按钮时,它会调用客户端函数来禁用它。但是我不知道它是如何工作的,以及它是否能像我想的那样工作。你可以使用下面提到的代码作为参考
<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>
var-submit=0;
函数CheckIsRepeat(){
如果(++提交>1){
警报('尝试多次提交此表单;此额外尝试将被忽略');
返回false;
}
}
在将数据保存到数据库之前,先解除按钮的锁定,然后保存数据,然后清除控件,然后再次启用按钮。
<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);
}
函数MyBtnClick(s,e){
if(ASPxClientEdit.AreEditorsValid())
ASPxButton_save.SetVisible(false);
}