我有一個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