2013-04-16 67 views
1

在我的web應用程序中使用asp.net我有一個帶編輯按鈕的gridview。這個gridview是通過連接兩個表而創建的。當我點擊這些編輯按鈕時,我需要更新這兩個表格。 我的gridview包含3個字段 - 名稱,nric和status.where表1中的名稱和nric以及來自table2的狀態。查詢如何更新兩個表? 請幫忙可以使用SQL Server中的連接操作更新兩個表嗎?

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
{ 
    GridView1.EditIndex = -1; 
} 
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView1.EditIndex = e.NewEditIndex; 
} 
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex]; 

    TextBox id = (TextBox)row.FindControl("s_id"); 
    TextBox name = (TextBox)row.FindControl("s_name"); 
    TextBox nric = (TextBox)row.FindControl("s_nric"); 
    TextBox status = (TextBox)row.FindControl("s_status"); 
    SqlConnection con = obj.getcon(); 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("update e.student_details ,f.student_vs_testsession_details set e.student_id='" + id.Text+ "',e.student_name='" + name.Text + "',e.student_nric='" + nric.Text + "',f.testsession_status='" + status.Text + "' where e.student_id=f.student_id", con); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 


} 
+0

你嘗試過這麼遠。你如何綁定gridview。在這裏放一些代碼。 –

+0

你可以通過發佈你已經嘗試過的東西,你真正想要的和一些有用的代碼來幫助我們。 –

回答

0

您的連接查詢將會與它相同。 [根據您的數據庫表結構,你沒有指定]對於GridView的編輯操作有如下的事情:

你必須處理3個事件:

RowEditingRowCancelingEditRowUpdating

以下是代碼:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView1.EditIndex = e.NewEditIndex; 

} 


protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
{ 
    e.Cancel = true; 
    GridView1.EditIndex = -1; 

} 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = GridView1.Rows[e.RowIndex]; 

    TextBox txtProductName = (TextBox)row.FindControl("txtProductName"); 
    TextBox txtUnitPrice = (TextBox)row.FindControl("txtUnitPrice"); 

    //From here you can fire Update query on database. 

} 

參考鏈接:

http://www.ezzylearning.com/tutorial.aspx?tid=1993146

希望它有幫助。

+0

你能解釋一下這是什麼意思嗎?TextBox txtProductName =(TextBox)row.FindControl(「txtProductName」);「 – nsds

+0

是的,txtProductName是創建的文本框的對象,它保存了單擊編輯行的項目的值按鈕。 – Freelancer

+0

先生,我的gridview包含3個字段 - 名稱,nric和status.where表1中的名稱和nric以及來自table2的狀態。查詢如何更新兩個表? – nsds

0

Divya,這是可能的。當你點擊更新按鈕時,你的網格變量將更新的數據傳遞給數據庫,但在這裏你需要激發不同的更新語句。讓我知道如果你有進一步的查詢....只是試試這個....!

+0

你能檢查我的代碼請 – nsds

+0

你好Divya,我是數據庫人,所以我沒有更多的應用程序代碼的經驗。但有一點是肯定的,你不能用一個更新語句來更新多個表,因爲你必須執行不同的更新語句。現在將有關變量傳遞給相關的更新語句。讓我知道進一步的查詢。謝謝... – Anvesh

0

@Divya Hari:您可以通過存儲過程來完成此任務。

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = GridView1.Rows[e.RowIndex]; 

    TextBox txtName = (TextBox)row.FindControl("txtName"); 
    TextBox txtstatus = (TextBox)row.FindControl("txtstatus"); 

    //  From here you can fire Update query on database. 
    // Here you write code for store procedure. 


} 

存儲過程。

in SP you need to write update query for both table. Something like this. 


SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE PROCEDURE UpdateBothTable 
    @ID int, 
    @Name varchar(50), 
    @Status varchar(10) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    Update table1 set [email protected] where [email protected] 

    Update Table2 set [email protected] where [email protected] 


END 
GO 

希望這將幫助你.... :)

+0

謝謝你sir..but是否有任何需要連接txtname與@Name? – nsds

+0

是的,你必須傳遞參數到商店程序變量@Name –

+0

無論你嘗試只是把你的代碼在這裏我會做的變化,並給你完整的代碼。這只是一個示例代碼。你如何完成任務。 –

相關問題