使用 C# 的数据网格视图中的单选按钮

本文关键字:视图 网格 单选按钮 数据网 数据 使用 | 更新日期: 2023-09-27 18:32:23

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

我想做的是,当选择"批准"按钮并单击数据网格中的"提交"按钮时,我希望将该行的数据存储在数据库中,Isactive 为 1,并且应从数据网格中删除该行,但详细信息必须存储在数据库中。

同样,当选择拒绝按钮并单击数据网格中的提交按钮时,该行的数据应存储在数据库中,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 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();        
}

使用 C# 的数据网格视图中的单选按钮

第一个问题:

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();
}

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

这个位:where ARGID=@ARGID正在检查数据库中带有"@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 注入

所以我建议你把它改成:

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)