2013-09-23 2 views
0

У меня есть сетка данных и у меня есть две кнопки радио в DataGrid то есть одобрять или отклонять, а также одна кнопка в сетке, т.е. представитьРадиокнопка в DataGridView с помощью C#

то, что я хочу сделать, это в случае утверждения выбрана кнопка и отправить кнопку в datagrid для одной строки. Я хочу, чтобы данные этой строки сохранялись в базе данных с 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 [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, так что sud это будет cmd.parameters.addwith value ("@ ARGID", дроу); ... извините, если я плохо в этом .. но я просто изучаю .. и я нахожу datagridview действительно запутанным .. – user2605927

+0

и да..и сделаю изменения ... – user2605927

+0

Я недостаточно понимаю о том, что вы пытаетесь сделать с обновлением базы данных isActive, чтобы сказать, должно ли оно быть строкой datagrid или нет ... – iabbott

Смежные вопросы