データベースのテーブル構造:
テーブルツリーを作成する(
主キー整数nd_idないヌル、
nd_parent整数、
nd_text VARCHAR(20)
)
コードファイル
システムを使用しました。
System.Collections.Genericを使用しました。
System.ComponentModelを使用しました。
System.Dataを使用しました。
System.Data.SqlClientを使用します。
System.Drawingを使用しました。
System.Textのを使用しました。
System.Windows.Formsを使用しました。
名前空間ツリー構造データベース_
{
パブリック部分クラスをForm1:をForm1
{
公共のForm1()
{
のInitializeComponent();
}
ます。private void Form1_Load(オブジェクト送信者、EventArgsの電子)
{
//加载目录树
gettreeview();
}
/// <要約>
///向数据库传输数据
/// </要約>
///ます。<param name = "STR"> </ param>の
プライベートのボイド接続(文字列str)
{
文字列sqlcon =「データソース=(ローカル);データベース= treedb;ユーザID =寺; PWD = '' ";
SqlConnectionのsqlconn =新しいSqlConnectionオブジェクト(sqlcon)。
sqlconn.Open();
SqlCommandオブジェクトCOM =新しいSqlCommandオブジェクト(文字列、sqlconn)。
com.ExecuteNonQuery();
sqlconn.Close();
///目录树加载
/// </要約>
ます。private void gettreeview()
{
文字列コンストラクタ= "データソース=(ローカル);データベース= treedb;ユーザID =寺; PWD = ''";
SqlConnectionのコン=新しいSqlConnectionオブジェクト(コンストラクタ)。
con.Open();
文字列sqlstr =「ツリーから選択します*」;
SqlDataAdapterオブジェクトSqlDataAdapterオブジェクト=新しいSqlDataAdapterオブジェクト(sqlstr、CON);
データセットDS =新しいデータセット();
sqldataadapter.Fill(DS、 "木");
con.Close();
//ルートローディング
ツリーノードツリーノードの新しい新TN =();
tn.Text = "システムフォルダ";
tn.Name = "0";
tn.Tag = "0";
TreeView1.Nodes.Add(TN)
のTreeView1 .SelectedNode = TN。
//加载子结点
IF(!DS = NULL)
{
foreachの(ds.TablesでのDataRow DR [0] .Rows)
{
TN =新しいツリーノード()。
tn.Text = DR [ "nd_text"]のToString()。
tn.Name = DR [ "nd_id"]のToString()。
tn.Tag = DR [ "nd_parent"]のToString()。
IF(!treeView1.SelectedNode = tn.Tag)
{
ツリーノード[] tn_temp = treeView1.Nodes.Find(DR [ "nd_parent"]のToString()、真。);
(tn_temp.Length> 0)であれば
{
treeView1.SelectedNode = tn_temp [0]。
}
}
TreeView1.SelectedNode.Nodes.Add(TN);
}
}
//すべてのルートノードとカーソルに戻り展開
treeView1.ExpandAllを();
treeView1.SelectedNode = treeView1.TopNode;
}
/// <まとめ>
// /ノードの追加
/// </要約>
///ます。<param name = "SENDER"> </ param>の
/// <PARAM NAME = "E"> </ param>の
プライベート無効newToolStripMenuItem_Click(SENDERオブジェクト、EventArgsのE )
{
のTreeNode TreeNodeの新しい新TN =();
tn.Text = "新しいフォルダ";
int型私は、Convert.ToInt32(treeView1.SelectedNode.Name)=。
treeView1.SelectedNode.Nodes.Add(TN)。
文字列STR1、STR2。
STR1 = "B @宣言@a整数、セット@a整数=(ツリーからMAX(nd_id)+1を選択)設定@b =" + I + ""。
STR2 = "木(nd_id、nd_parent、nd_text)値への挿入(@、@ B '新建文件夹')"。
接続(STR1 + STR2)。
treeView1.Nodes.Clear();
gettreeview();
}
/// <要約>
///删除结点
/// </要約>
/// <PARAM NAME = "送信元"> </ PARAM>
/// <PARAM NAME = "E"> </ PARAM>
プライベート無効deleteToolStripMenuItem_Click(オブジェクト送信者、EventArgsの電子)
{
場合(treeView1.SelectedNode。
int型私は、Convert.ToInt32(treeView1.SelectedNode.Name)=。
treeView1.SelectedNode.Remove();
STR1列STR2;
0009 = "整数のDECLARE @aセットの@a =" + I + "";
STR2 = "削除ツリーからWHERE nd_id @a =";
接続(STR1 + STR2);
}
他
{
MessageBox.Show( 、「エラー!」「このフォルダには、削除することはできません、空ではない」MessageBoxButtons.OK、MessageBoxIcon.Informationを);
リターン;
}
}
/// <要約>
///重命名结点
/// </要約>
/// <PARAM NAME = "送信元"> </ PARAM>
/// <PARAM NAME = "E"> </ PARAM >
プライベートボイドrenameToolStripMenuItem_Click(オブジェクト送信者、のEventArgs電子)
{
treeView1.LabelEdit = TRUE。
treeView1.SelectedNode.BeginEdit();
}
/// <要約>
///结点重命名后触发的事件
/// </要約>
/// <PARAM NAME = "送信元"> </ PARAM>
/// <PARAM NAME = "E" > </ param>の
プライベート無効treeView1_AfterLabelEdit(オブジェクト送信者、
treeView1.SelectedNode.EndEdit(真の);
treeView1.LabelEdit = falseは、
文字列のノード名= e.Label。
int型私は、Convert.ToInt32(treeView1.SelectedNode.Name)=。
STR1文字列、STR2、
STR1 = "VARCHAR @a DECLARE SETの@a =(20)で'" +ノード名+ "'";
STR2 = "更新ツリーSET nd_text @a = nd_id =" + I + "";
接続( + STR2 STR1);
}
}
}
----------------
免責事項:この記事はCSDNブロガー元の記事"未知の007"で、CC 4.0 BY-SAの著作権契約書に従って、再版元のソースと、この文へのリンクを含めてください。
オリジナルリンクします。https://blog.csdn.net/kinwa007/article/details/2801199