Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TreeView-保存对数据库表的更改_C#_Winforms_Treeview - Fatal编程技术网

C# TreeView-保存对数据库表的更改

C# TreeView-保存对数据库表的更改,c#,winforms,treeview,C#,Winforms,Treeview,我有一个C#winforms应用程序表单,上面有一个TreeView。使用数据库中存储的过程和视图(不是表)填充TreeView 这很好,因为它将信息作为所有根节点放入TreeView。我为TreeView的用户提供了拖放功能,因此他们可以移动节点并拥有父/子/孙/等。但是,需要很多。这也很好 我正在努力(更像是感到沮丧)将用户的TreeView更改保存回数据库表。我考虑过在每次移动时进行更改,但决定在移动完成后使用按钮单击事件 我正在提供我目前拥有的代码。请记住,这不是click事件的最终外观

我有一个C#winforms应用程序表单,上面有一个
TreeView
。使用数据库中存储的过程和视图(不是表)填充
TreeView

这很好,因为它将信息作为所有根节点放入
TreeView
。我为
TreeView
的用户提供了拖放功能,因此他们可以移动节点并拥有
父/子/孙/
等。但是,需要很多。这也很好

我正在努力(更像是感到沮丧)将用户的
TreeView
更改保存回数据库表。我考虑过在每次移动时进行更改,但决定在移动完成后使用按钮单击事件

我正在提供我目前拥有的代码。请记住,这不是click事件的最终外观,因为按钮没有命名,还需要进行一些其他清理,
sqlUpdate
实际上将成为一个存储过程

sqlUpdate
中,列出了2个参数<代码>@parentid和
@industryid
。如果我要用数字(例如:1和4)硬编码,则更新工作正常,并在表中更改为正确的行业id。填充
TreeView
时,它使用表中的三(3)个字段<代码>行业ID,
父ID
行业项目
。它们进入数据表并进入
TreeView

我感到沮丧的是得到了
@parentid
@industryid
,这就是我在这里发布帮助的原因。我已经做了很多次更新、删除、插入,但由于某种原因,这让绘图变成了空白

我确实意识到我需要在代码中指定参数,但我认为这就是问题所在。这是两条线

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

这里有一种方法:


对于@industryid,在数据库中使用自动递增的id列。填充treeview时,将该值指定给treeview节点标记。然后将treeview.parent.tag的值用于@parentid。

谢谢您的回复。你有一个例子吗?这是填充树视图的代码。不要介意响应。我已经改变了信息的显示方式。已经在这上面花了太多时间了。