が付いたC#winformsアプリフォームがありTreeView
ます。の入力TreeView
は、データベースからのストアドプロシージャとビュー(テーブルではない)を使用して行われます。
TreeView
これは、すべてのルートノードとして情報を配置するため、正常に機能します。TreeView
ユーザーがノードを移動したり、などを使用したりできるように、ユーザーがドラッグアンドドロップを使用できるようにしていますparent/child/grandchild/
。ただし、多くのユーザーが必要です。これも問題なく動作します。
私が苦労しているのは(イライラするようなものです)、ユーザーのTreeView
変更をデータベーステーブルに保存することです。移動するたびに変更を加えることを検討しましたが、すべての移動が完了したら、ボタンクリックイベントを使用することにしました。
私はこれまでに持っているコードを提供しています。ボタンには名前が付けられておらず、他にもいくつかのクリーンアップが必要であり、sqlUpdate
実際にはストアドプロシージャになるため、これはクリックイベントの最終的な外観ではないことに注意してください。
リストされsqlUpdate
ている2つのパラメータがあります。@parentid
および@industryid
。番号(例:1および4)を使用してハードコーディングすると、更新が機能し、テーブル内の変更が正しい業界IDになります。がTreeView
入力されると、テーブルの3つのフィールドが使用されます。IndustryID
、、。ParentID
_ IndustryItem
これらはデータテーブルとに移動しTreeView
ます。
私がイライラしているのは、を取得すること@parentid
です@industryid
。そのため、ここにヘルプを投稿しています。私は何度も更新、削除、挿入を行いましたが、何らかの理由で描画が空白になっています。
コードでパラメーターを指定する必要があることはわかっていますが、それが問題の原因だと思います。これが2行です。
command.Parameters.AddWithValue("@parentid", ?????);
command.Parameters.AddWithValue("@industryid", ?????);
そして、これがクリックハンドラーです:
private void button6_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlCommand command = new SqlCommand();
{
string sqlUpdate = "UPDATE tblIndustry SET IndustryItemParentID = @parentid WHERE IndustryID = @industryid";
try
{
conn.Open();
command.Connection = conn;
command.CommandType = CommandType.Text;
command.CommandText = sqlUpdate;
command.ExecuteNonQuery();
MessageBox.Show("Done");
}
catch (Exception ex)
{
MessageBox.Show("There is an error." + '\r' + '\n' + '\r' + '\n' + ex.ToString(), "NOTICE", MessageBoxButtons.OK);
}
finally
{
conn.Close();
}
}
}
}