0

が付いた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();
            }
        }
    }
}
4

1 に答える 1

0

これを行う1つの方法は次のとおりです。

@industryid には、データベースで自動インクリメントされる id 列を使用します。ツリービューを設定するときに、その値をツリービュー ノード タグに割り当てます。次に、@parentid に treeview.parent.tag の値を使用します。

于 2013-01-03T16:32:57.783 に答える