私はこれを解決することはできません。DBにデータを格納するフォームを備えたC#の単純なページがあります。私の問題は、クリック イベントが 2 回発生するため、データが 2 回保存されることです。イベントが 2 回呼び出される場所が見つかりません。何か助けはありますか?タイ!(これは私のボタンです:)
<div id="submit_buttons">
<asp:Button id="btnAgregar" runat="server" Text="Enviar" CausesValidation="true" OnClick="btnAgregar_Click"/>
</div>
そして、これは私のコードビハインドです:
protected void btnAgregar_Click(object sender, CommandEventArgs e)
{
//insertamos proyectos
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
SqlCommand sqlComm = new SqlCommand();
sqlComm = sqlConn.CreateCommand();
sqlComm.CommandText = @"INSERT INTO proyectos (nombre, descripcion, archivo, idRegion, idCategoria) OUTPUT INSERTED.ID VALUES (@nombre,@descripcion, @archivo, @region, @categoria)";
sqlComm.Parameters.Add("@nombre", SqlDbType.VarChar);
sqlComm.Parameters["@nombre"].Value = this.proy_nombre.Value;
sqlComm.Parameters.Add("@archivo", SqlDbType.VarBinary);
sqlComm.Parameters["@archivo"].Value = this.archivo.FileBytes;
sqlComm.Parameters.Add("@region", SqlDbType.Int);
sqlComm.Parameters["@region"].Value = this.cmbRegion.SelectedValue;
sqlComm.Parameters.Add("@categoria", SqlDbType.VarChar);
sqlComm.Parameters["@categoria"].Value = this.cmbCategoria.SelectedValue;
sqlComm.Parameters.Add("@descripcion", SqlDbType.Text);
sqlComm.Parameters["@descripcion"].Value = this.p_descripcion.Value;
sqlConn.Open();
sqlComm.ExecuteNonQuery();
int lastID = (int)sqlComm.ExecuteScalar();
//insertamos concursantes
SqlCommand sqlCommConcursantes = new SqlCommand();
sqlCommConcursantes = sqlConn.CreateCommand();
sqlCommConcursantes.CommandText = @"INSERT INTO concursantes(nombre, email,titulo, idArea) OUTPUT INSERTED.ID VALUES (@nombre,@email, @titulo, @idArea)";
sqlCommConcursantes.Parameters.Add("@nombre", SqlDbType.VarChar);
sqlCommConcursantes.Parameters["@nombre"].Value = this.c1_nombre.Value;
sqlCommConcursantes.Parameters.Add("@email", SqlDbType.VarChar);
sqlCommConcursantes.Parameters["@email"].Value = this.c1_email.Value;
sqlCommConcursantes.Parameters.Add("@titulo", SqlDbType.VarChar);
sqlCommConcursantes.Parameters["@titulo"].Value = this.c1_titulo.Value;
sqlCommConcursantes.Parameters.Add("@idArea", SqlDbType.Int);
sqlCommConcursantes.Parameters["@idArea"].Value = this.c1_area.Value;
sqlCommConcursantes.ExecuteNonQuery();
int lastIDConcursantes = (int)sqlCommConcursantes.ExecuteScalar();
//asociamos proyectos con concursantes.
SqlCommand sql = new SqlCommand();
sql = sqlConn.CreateCommand();
sql.CommandText = @"INSERT INTO proyectos_concursantes(idProyecto, idConcursante) VALUES (@idP,@idC)";
sql.Parameters.Add("@idP", SqlDbType.Int);
sql.Parameters["@idP"].Value = lastID;
sql.Parameters.Add("@idC", SqlDbType.Int);
sql.Parameters["@idC"].Value = lastIDConcursantes;
sql.ExecuteNonQuery();
sqlConn.Close();
Response.Redirect("About.aspx");
}