C# 使用C在datagridview中单击单选按钮

C# 使用C在datagridview中单击单选按钮,c#,asp.net,sql-server-2008,datagridview,C#,Asp.net,Sql Server 2008,Datagridview,我有数据网格,在数据网格中有两个单选按钮,即批准或拒绝,在数据网格中还有一个按钮,即提交 我想做的是,当选中approved按钮并单击datagrid中的submit按钮时,我希望该行的数据存储在数据库中,Isactive为1,该行应从datagrid中删除,但详细信息必须存储在数据库中 同样,当选择拒绝按钮并单击datagrid中的提交按钮时,该行的数据应存储在数据库中,Isactive为0,并且应从datagrid中删除该行 详细信息必须存储在数据库中 处于活动状态的未在数据库中更新 有人能

我有数据网格,在数据网格中有两个单选按钮,即批准或拒绝,在数据网格中还有一个按钮,即提交

我想做的是,当选中approved按钮并单击datagrid中的submit按钮时,我希望该行的数据存储在数据库中,Isactive为1,该行应从datagrid中删除,但详细信息必须存储在数据库中

同样,当选择拒绝按钮并单击datagrid中的提交按钮时,该行的数据应存储在数据库中,Isactive为0,并且应从datagrid中删除该行

详细信息必须存储在数据库中

处于活动状态的未在数据库中更新

有人能告诉我我的密码出了什么问题吗?下面是我试过的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 ARGID=@ARGID", conn);

        cmd.ExecuteNonQuery();
        conn.Close();        
    }
    else if (rbpReject.Checked == true)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("Update table set IsActive= 1 where ARGID=@ARGID", 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();        
}
第一个问题:

这个区块没有做任何事情,或者至少没有做它应该做的事情

此位:其中ARGID=@ARGID正在检查数据库中是否有带有@ARGID的条目。我想你应该添加参数,但是忘记了

cmd.Parameters.AddWithValue("@ARGID", /* The value to be checking for */ )
第二个问题:

这应该像其他2条语句一样参数化,以防止

因此,我建议您将其更改为:

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)

是的,我不知道如何放置要检查的值…它应该检查datagrid中的当前行,所以它应该是cmd.parameters.addwithvalue@ARGID,卓尔;。。。抱歉,如果我不擅长这一点…但我只是在学习..我发现datagridview真的很混乱..我不太了解您试图对isActive数据库更新执行的操作,不知道它是否应该是datagrid行…不,我在datagrid中有一行包含员工名称和empid,它还包含2个无线电按钮approve和reject,最后是submit按钮..所有这些都在datagrid中…因此,当我选择approve并单击submit时,我希望iActive更新为1,所有这些网格详细信息都必须保存在DB中…那么表中还有什么?只有一个字段用于活动/非活动?表中有四个字段employee、designation、empid和Isactive…因此,当用户单击单选按钮accept from the datagrid…时,datagrid当前行的所有详细信息都应保存在数据库中,Isactive为1
SqlCommand comm = new SqlCommand("insert into [T_TADA_aaprovereject_groupdirector] values (" + empid + ",'" + employeename + "','" + designation + "')", conn);
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)