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