2013-09-23 85 views
0

我有數據網格和我在DataGrid即兩個單選按鈕批准或拒絕,並在數據網格即一個鍵提交單選按鈕使用C#

我想是認可的,當按鈕被選中做,單擊數據網格中的提交按鈕以顯示一行我希望將該行的數據以Isactive格式存儲在數據庫中,並且該行應從數據網格中刪除,但詳細信息必須存儲在數據庫中。

類似地,當按鈕被選擇並在數據網格提交按鈕被點擊時,該行的數據應被存儲在與Isactive數據庫中作爲0和行應該從數據網格中刪除拒收

細節必須存儲在數據庫中。

的是活躍在數據庫

有人能告訴我什麼是錯在我的代碼沒有更新?下面的是,我想我的C#代碼..

protected void submit(object sender, EventArgs e) 
{ 
    // *Get the Gridview Row* // 
    DataGridItem drow = (DataGridItem)(sender as Control).Parent.Parent; 

    RadioButton rbpApprove = (RadioButton)drow.FindControl("rbtnapprove"); 
    RadioButton rbpReject = (RadioButton)drow.FindControl("rbtnreject"); 

    if (rbpApprove.Checked == true) 
    { 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand("Update table set IsActive= 0 where [email protected]", conn); 

     cmd.ExecuteNonQuery(); 
     conn.Close();   
    } 
    else if (rbpReject.Checked == true) 
    { 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand("Update table set IsActive= 1 where [email protected]", conn); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 
    } 


    string empid = dgi.Cells[0].Text; 
    string employeename = dgi.Cells[2].Text; 
    string designation = dgi.Cells[3].Text; 

    conn.Open(); 
    SqlCommand comm = new SqlCommand("insert into [table] values (" + empid + ",'" + employeename + "','" + designation + "')", conn); 
    comm.ExecuteNonQuery(); 
    conn.Close();   
} 

回答

1

第一個問題:

if (rbpApprove.Checked == true) 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand("Update table set IsActive= 0 where [email protected]", conn); 

    cmd.ExecuteNonQuery(); 
    conn.Close();   
} 
else if (rbpReject.Checked == true) 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand("Update table set IsActive= 1 where [email protected]", conn); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 

此塊沒有做任何事情(或者至少不是它應該)

這位:where [email protected]正在使用「@ARGID」檢查數據庫中的條目。我希望你應該添加參數,但忘記了?

cmd.Parameters.AddWithValue("@ARGID", /* The value to be checking for */) 

問題二:

SqlCommand comm = new SqlCommand("insert into [T_TADA_aaprovereject_groupdirector] values (" + empid + ",'" + employeename + "','" + designation + "')", conn); 

這應該是參數化像其他2個陳述,謹防SQL Injection

所以我建議你把它改爲:

SqlCommand comm = new SqlCommand("insert into [T_TADA_aaprovereject_groupdirector] values (@empid, @employeename, @designation)", conn); 
comm.Parameters.AddWithValue(@empid, empid) 
comm.Parameters.AddWithValue(@employeename, employeename) 
comm.Parameters.AddWithValue(@designation, designation) 
+0

是的,我不知道如何把值爲c hecking for ...它應該檢查datagrid中的當前行,以便它可以是cmd.parameters.addwith value(「@ ARGID」,drow); ...如果我對此不好,但是我只是在學習..我發現datagridview真的令人困惑.. – user2605927

+0

和是的..我會做的更改... – user2605927

+0

我不明白你想要做什麼,用'isActive'數據庫更新來說是否應該是數據網格行或不... – iabbott