2013-09-23 92 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