2016-07-31 11 views
-1

geben I keinen Primärschlüsselwert von einer Form in eine andere Form übergeben kann, und ich bin nicht mit GridIch kann einen Primärschlüsselwert von einer Form in eine andere Form in asp.net

protected void btnRegister_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(conString); 

    SqlCommand cmd = new SqlCommand("SP_INSERT_DriverRegistration", con); 
    cmd.CommandType = CommandType.StoredProcedure; 

    cmd.Parameters.Add("@DriverReg_id", HF_Reg_Id.Value); 
    cmd.Parameters.Add("@Fname", Fname.Text); 
    cmd.Parameters.Add("@Lname", Lname.Text); 
    cmd.Parameters.Add("@Email", Email1.Text); 
    cmd.Parameters.Add("@Password", Password.Text); 
    cmd.Parameters.Add("@Gender", Gender.Text); 
    cmd.Parameters.Add("@Mobile", Mobile.Text); 
    cmd.Parameters.Add("@CNIC", CNIC.Text); 
    cmd.Parameters.Add("@Address", Address.Text); 
    cmd.Parameters.Add("@DrivingExperience", DrivingExperience.Text); 
    cmd.Parameters.Add("@license", license.Text); 
    cmd.Parameters.Add("@Route", ddlRoute.SelectedItem.Text); 

    con.Open(); 
    string result = cmd.ExecuteNonQuery().ToString(); 
    con.Close(); 

    string id = HF_Reg_Id.Value.ToString(); 
    Response.Redirect("VanRegister.aspx?id= "+id); 
} 

Ich habe 2 Tabellen DriverRegistration und VanRegistration. Wenn der Fahrer das Fahrerregistrierungsformular ausfüllt und es einreicht, öffnet sich das Van-Registrierungsformular und in VanRegistration wird die Tabelle DriverReg_id eingefügt. Deshalb möchte ich DriverReg_id über Abfragezeichenfolge übergeben.

Stored Procedure von DriverRegistration Tabelle

ALTER PROC [dbo].[SP_INSERT_DriverRegistration] 
    @DriverReg_id as int, 
    @Fname varchar(50), 
    @Lname varchar(50), 
    @Email varchar(50), 
    @Password varchar(50), 
    @Gender varchar(50), 
    @Mobile varchar(50), 
    @CNIC varchar(50), 
    @Address varchar(50), 
    @DrivingExperience varchar(50), 
    @license varchar(50), 
    @Route varchar(50) 
AS BEGIN 
    IF @DriverReg_id = -1 --FOR INSERTION IF CONDITION TRUE 
     IF EXISTS(SELECT TOP 1 DriverReg_id 
       FROM DriverRegistration 
       WHERE Fname = @Fname AND Mobile = @Mobile)  
     BEGIN 
      SELECT -1  
     END 
     ELSE BEGIN 
      INSERT INTO DriverRegistration(Fname, Lname, Email, Password, Gender, Mobile, CNIC, Address, DrivingExperience, license, Route, CreatedOn, CreatedBy, UpdatedBy, UpdatedOn, IsActive, IsVerified)   
      VALUES(@Fname, @Lname, @Email, @Password, @Gender, @Mobile, @CNIC, @Address, @DrivingExperience, @license, @Route, GETDATE(), 1, null, null, 1, 0) 

      SELECT SCOPE_IDENTITY() 
     END 
    END 
    ELSE BEGIN 
     UPDATE DriverRegistration 
     SET Fname = @Fname, Lname = @Lname, Email = @Email, 
      Password = @Password, Gender = @Gender, 
      Mobile = @Mobile, CNIC = @CNIC, 
      Address = @Address, DrivingExperience = @DrivingExperience, 
      license = @license, Route = @Route, 
      UpdatedOn = GETDATE(), UpdatedBy = 1 
     WHERE 
      DriverReg_id = @DriverReg_id 
    END 
END 
+0

ich will id in van Registrierungsseite public partial class VanRegister weitergeben müssen: System.Web.UI.Page { String conString = System.Configuration.ConfigurationManager.ConnectionStrings [ "myConstring"] ToString();. protected void Page_Load (object sender, EventArgs e) { if (! IsPostBack) { if (Request.QueryString.Count> 0) { HF_Reg_Id.Value = Request.QueryString [ "id"]. ToString (); // HF_DriverReg_id.Value = Request.QueryString ["DriverReg_id"]. ToString();}}} –

+0

Beachten Sie, dass das Präfix 'SP_' zur Bezeichnung von System Stored Procs verwendet wird und in Anwendungsprozeduren vermieden werden sollte (https: // msdn.microsoft.com/en-us/library/ms187926.aspx). Verwenden Sie ein anderes Präfix (oder gar kein Präfix) und befolgen Sie die Best Practices für schemafähige Objekte, um die Leistung zu maximieren. –

+0

Sie haben hier eine unvollständige Frage. Sie haben das Verhalten nicht spezifisch genug beschrieben. Du sagst einfach, du kannst "nicht bestehen". Erfolgt die Weiterleitung? Sieht die URL korrekt aus? Welcher Code auf der Empfangsseite ist für das Abrufen der ID aus der Abfragezeichenfolge verantwortlich? – mason

Antwort

-1

Ich denke, verwenden Sie Session["ID"]=HF_Reg_Id.Value.ToString(); und Umleiten zu VanRegister.aspx dann überprüfen if(Session["ID"]!=null) fortzusetzen. Viel Glück.

+0

Sitzung ["ID"] = HF_Reg_Id.Value.ToString(); Response.Redirect ("VanRegister.aspx? Id =" + ID); –

+0

Sitzung ["ID"] = HF_Reg_Id.Value.ToString(); Response.Redirect ("VanRegister.aspx"); hinter Code PageLoad "VanRegister.aspx" - if (Sitzung ["ID"]! = null) {...} –

+0

Sitzung ist nicht dafür geeignet. Das Übergeben der ID ist für diese Client-Server-Interaktion eindeutig und keine Eigenschaft der Sitzung. Es ist sinnvoller, sie per URL zu übergeben. Das Übergeben über die Sitzung kann zu einem unerwarteten Verhalten führen, wenn der Client mehr als ein Tab/Fenster gleichzeitig auf der Site geöffnet hat. – mason