0

Oracle 10g Express Edition を使用しています。

テーブルに存在する値に基づいて、ラジオボタンとテキストボックスのセットが動的に生成されます。

私が欲しいのは、ユーザーがラジオボタンを選択して削除ボタンをクリックすると、ラジオボタンの直前のテキストフィールドにある値が文字列変数に取り込まれ、この値がデータベースのテーブルで削除されることです。

これは、ラジオボタンとテキストボックスを生成する方法です:

foreach (DataRow dr in dsData.Tables[0].Rows){

    TextBox txt_task = new TextBox();
    txt_task.Enabled = false;
    txt_task.Text = " " + dr[0].ToString();
    txt_task.Width = 300;
    txt_task.ID = "dynamictask" + counter.ToString();

    RadioButton chk_delete = new RadioButton();
    chk_delete.Enabled = true;
    chk_delete.GroupName = "del_grp";
    chk_delete.ID = "dynamicrdio" + counter.ToString();

    dynamic_controls_holder.Controls.Add(chk_delete);
    dynamic_controls_holder.Controls.Add(new LiteralControl("   "));
    dynamic_controls_holder.Controls.Add(txt_task);
    dynamic_controls_holder.Controls.Add(new LiteralControl("<br />"));

    //The inital value of counter was 0.
    counter+=1;
}

そして、これは私が削除操作を実行しようとしている方法です:

for (int counter = 0; counter <= rows_count; counter++){
    string dynamic_rdio_finder = "dynamicrdio" + counter.ToString();
    string dt = "dynamictask" + counter.ToString();
    RadioButton temp_rdio = (RadioButton)dynamic_controls_holder.FindControl(dynamic_rdio_finder);
    if (temp_rdio.Checked){
        TextBox temp_task = (TextBox)dynamic_controls_holder.FindControl(dt);
        temp_task_txt = temp_task.Text;
        break;
    }
}

connection.Open();
OracleCommand command = new OracleCommand("DELETE FROM tbl_mark6_task WHERE description_task=:description_task", connection);
command.Parameters.AddWithValue("description_task", temp_task_txt);
rows_count = command.ExecuteNonQuery();
command.Parameters.Clear();

if (rows_count == 1){
    lbl_notification.Text = "Task was deleted successfully.";
}
else if (rows_count != 1){
    lbl_error.Text = "Task was not deleted!";
}

そして、これは機能していません。問題が何であるかを見つけることができないようです。

4

1 に答える 1

1

トランザクション境界で使用する必要があり、明示的にコミットする必要があります。詳細については、このリンクを参照してください。

また、 OracleCommandは非推奨になったことにも注意してください。次のバージョンで削除されます。

OracleTransaction transaction;
command.Transaction = transaction;
....
command.ExecuteNonQuery();
transaction.Commit();
于 2013-10-06T15:34:34.743 に答える