【发布时间】:2016-07-31 12:10:09
【问题描述】:
我无法将主键值从一个表单传递到另一个表单,并且我没有使用 gridview
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);
}
我有 2 张桌子 DriverRegistration 和 VanRegistration。当司机填写司机登记表并提交时,货车登记表将打开,VanRegistration 表中DriverReg_id 将插入。这就是为什么我想通过查询字符串传递DriverReg_id。
DriverRegistration表的存储过程
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
【问题讨论】:
-
我想在货车注册页面中传递 id public partial class VanRegister : 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();}}}
-
请注意,
SP_前缀用于指定系统存储的过程,应避免在应用程序过程中使用 (msdn.microsoft.com/en-us/library/ms187926.aspx)。使用不同的前缀(或根本不使用)并遵循模式限定对象的最佳实践以最大限度地提高性能。 -
这里有一个不完整的问题。您没有足够具体地描述该行为。你只是说你“不能通过”。重定向是否发生? URL 看起来是否正确?接收页面上的哪些代码负责从查询字符串中检索 ID?
-
@mason 我想重定向 Van 表单,其中一列是 DriverReg_id 但它在 Van 表单的 DriverReg_id 中插入 -1
-
您仍然没有完整的问题。重读我之前的评论。显示
HF_Reg_Id的位置并解释为什么您认为它应该具有价值。
标签: c# asp.net sql-server stored-procedures asp.net-web-api