我有一个C#winforms应用程序窗体,上面有一个TreeView
。填充TreeView
是使用数据库中存储的proc和view(不是表)完成的。TreeView - 将更改保存到数据库表
这可以正常工作,因为它将信息放入TreeView
作为所有根节点。我已经为用户提供了TreeView
的拖放功能,因此他们可以移动节点并拥有parent/child/grandchild/
等。但是,需要很多。这也很好。
我在挣扎着(更像是沮丧),将用户的TreeView
更改保存回数据库表。我考虑在每次移动时进行更改,但在完成所有移动操作后,决定使用按钮单击事件。
我正在提供我目前使用的代码。请记住,这不是单击事件的最终外观,因为未命名按钮以及一些其他需要的清理,sqlUpdate
实际上将成为存储过程。
在sqlUpdate
中列出了2个参数; @parentid
和@industryid
。如果我用一个数字(例如:1和4)对这些数据进行硬编码,则更新将起作用,并将表中的更改更改为正确的行业ID。当填充TreeView
时,它使用表中的三(3)个字段; IndustryID
,ParentID
,IndustryItem
。这些进入数据表和TreeView
。
我感到沮丧的是得到@parentid
和@industryid
这就是为什么我张贴在这里寻求帮助。我做了更新,删除,插入多次,但由于某种原因,这使得绘制一个空白。
我知道我需要在代码中指定参数,但我认为这是问题所在。这是两条线;
command.Parameters.AddWithValue("@parentid", ?????);
command.Parameters.AddWithValue("@industryid", ?????);
这里是click处理程序:
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();
}
}
}
}
谢谢你的回复。你有一个例子吗?这里是填充treeview的代码。 – John
无需回应。我已经改变了信息的显示方式。已经花费太多时间了。 – John