关于TreeView(CS/BS)解决方案
以下是CS解決方案
/// <summary>
/// WinForm TreeView綁定
/// </summary>
public class WinTree
{
DataProvider DataProvider;
private string tableName;
private string parentID;
private string currID;
private string text;
private bool expand;
/// <summary>
/// 數據庫表名
/// </summary>
public string TableName
{
get
{ return tableName; }
set
{ tableName = value; }
}
/// <summary>
/// 父節點欄位
/// </summary>
public string ParentID
{
get
{ return parentID; }
set
{ parentID = value; }
}
/// <summary>
/// 當前節點(子節點)欄位
/// </summary>
public string CurrID
{
get
{ return currID; }
set
{ currID = value; }
}
/// <summary>
/// 文字顯示欄位
/// </summary>
public string Text
{
get
{ return text; }
set
{ text = value; }
}
/// <summary>
/// 是否全部展開(true/false)(默認為false)
/// </summary>
public bool Expand
{
get
{ return expand; }
set
{ expand = value; }
}
public WinTree(IDbConnection dbconn)
{
DataProvider = new DataProvider(dbconn);
}
/// <summary>
/// 通過遞歸加載節點
/// </summary>
/// <param >TreeView 對象</param>
/// <param >父節點的初始值,如("0")</param>
public void GetTreeViewNode(TreeView tree, string parentID)
{
FillTree(tree, parentID, (TreeNode)null);
if (Expand == true)
{
tree.ExpandAll();
}
}
private void FillTree(TreeView tree, string AParentID, TreeNode pNode)
{
string SQL = "select * from " + TableName + "";
// DataSet ds = DataProvider.GetDataSet(SQL);
DataTable dt = DataProvider.GetDataTable(SQL);
DataView dvTree = new DataView(dt);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = ParentID + "=" + AParentID + "";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根節點
Node.Text = Row[Text].ToString();
Node.Tag = Row[CurrID].ToString();
tree.Nodes.Add(Node);
FillTree(tree, Row[CurrID].ToString(), Node);
//再次遞歸
}
else
{
//̀添加當前節點的子節點
Node.Text = Row[Text].ToString();
Node.Tag = Row[CurrID].ToString();
//pNode.ChildNodes.Add(Node);
pNode.Nodes.Add(Node);
FillTree(tree, Row[CurrID].ToString(), Node);
//再次遞歸
}
}
}
/// <summary>
/// 選擇加載節點
/// </summary>
/// <param >TreeView 對象</param>
/// <param >父節點的初始值,如("0")</param>
public void GetSelectTree(TreeView tree, string parentID)
{
tree.AfterSelect += new TreeViewEventHandler(tree_AfterSelect);
string sql = "select * from " + TableName + " where " + ParentID + "=" + parentID + "";
DataTable dt = DataProvider.GetDataTable(sql);
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = dt.Rows[i][Text].ToString();
node.Tag = dt.Rows[i][CurrID].ToString();
tree.Nodes.Add(node);
}
}
private void tree_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.GetNodeCount(false) == 0)
{
int cid = Convert.ToInt32(e.Node.Tag);
string sql = "select * from " + TableName + " where " + ParentID + "=" + CurrID;
DataTable dt = DataProvider.GetDataTable(sql);
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = dt.Rows[i][Text].ToString();
node.Tag = dt.Rows[i][CurrID].ToString();
TreeNode treenode = (TreeNode)e.Node;
treenode.TreeView.SelectedNode.Nodes.Add(node);
treenode.TreeView.SelectedNode.Expand();
}
}
}
}
以下是Web結構爭決方案
/// <summary>
/// Web TreeView綁定
/// </summary>
public class WebTree
{
DataProvider DataProvider;
private string sql;
private string id;
private string parentID;
private string valueNode;
private string textNode;
private string imageUrl;
private string navigateUrl;
private bool expanded;
/// <summary>
/// SQL語句
/// </summary>
public string SQL
{
get
{
return sql;
}
set
{
sql = value;
}
}
/// <summary>
/// 節點ID
/// </summary>
public string ID
{
get
{
return id;
}
set
{
}
}
/// <summary>
/// 父節點ID(最頂層的節點如"000")
/// </summary>
public string ParentID
{
get
{
return parentID;
}
set
{
parentID = value;
}
}
/// <summary>
/// 綁定到Value屬性節點的字段
/// </summary>
public string ValueNode
{
get
{
return valueNode;
}
set
{
valueNode = value;
}
}
/// <summary>
/// 綁定到Text屬性節點的字段
/// </summary>
public string TextNode
{
get
{
return textNode;
}
set
{
textNode = value;
}
}
/// <summary>
/// 綁定到ImageUrl屬性節點的字段
/// </summary>
public string ImageUrl
{
get
{
return imageUrl;
}
set
{
imageUrl = value;
}
}
/// <summary>
/// 綁定到NavigateUrl屬性節點的字段
/// </summary>
public string NavigateUrl
{
get
{
return navigateUrl;
}
set
{
navigateUrl = value;
}
}
/// <summary>
/// 是否展開(默認是false)
/// </summary>
public bool Expanded
{
get
{
if (expanded == true)
{
return expanded = true;
}
else
{
return expanded = false;
}
}
set
{
expanded = value;
}
}
/// <summary>
/// 构造函數
/// </summary>
/// <param >連接數據庫的字符串</param>
public WebTree(IDbConnection dbConn)
{
DataProvider = new DataProvider(dbConn);
}
/// <summary>
/// 把數綁定到TreeView
/// </summary>
/// <param >TreeView 的ID</param>
public void GetTreeViewNode(TreeView tree)
{
FillTree(tree,ParentID,(TreeNode)null);
}
/// <summary>
/// 把數綁定到TreeView
/// </summary>
/// <param >TreeView 的ID</param>
/// <param >是否綁定NavigateUrl屬性</param>
/// <param >是否綁定ImageUrl屬性</param>
public void GetTreeViewNode(TreeView tree,bool navigateurl,bool imageurl)
{
if(navigateurl == true && imageurl == true)
{
FillTreeImageUrlNavigateUrl(tree, ParentID, (TreeNode)null);
}
if (navigateurl == true && imageurl == false)
{
FillTreeNavigateUrl(tree, ParentID, (TreeNode)null);
}
if (navigateurl == false && imageurl == true)
{
FillTreeImageUrl(tree, ParentID, (TreeNode)null);
}
if (navigateurl == false && imageurl == false)
{
FillTree(tree, ParentID, (TreeNode)null);
}
}
public void FillTree(TreeView tree, string AParentID, TreeNode pNode)
{
DataSet ds = DataProvider.GetDataSet(SQL);
DataView dvTree = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = "ParentID ='" + AParentID + "'";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
tree.Nodes.Add(Node);
Node.Expanded = Expanded;
FillTree(tree, Row[ID].ToString(), Node);
//再次遞歸
}
else
{
//̀添加當前節點的子節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = Expanded;
FillTree(tree, Row[ID].ToString(), Node);
//再次遞歸
}
}
}
public void FillTreeNavigateUrl(TreeView tree, string AParentID, TreeNode pNode)
{
DataSet ds = DataProvider.GetDataSet(SQL);
DataView dvTree = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = "ParentID ='" + AParentID + "'";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
Node.NavigateUrl = Row[NavigateUrl].ToString();
tree.Nodes.Add(Node);
Node.Expanded = Expanded;
FillTreeNavigateUrl(tree, Row[ID].ToString(), Node);
//再次遞歸
}
else
{
//̀添加當前節點的子節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
Node.NavigateUrl = Row[NavigateUrl].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = Expanded;
FillTreeNavigateUrl(tree, Row[ID].ToString(), Node);
//再次遞歸
}
}
}
public void FillTreeImageUrl(TreeView tree, string AParentID, TreeNode pNode)
{
DataSet ds = DataProvider.GetDataSet(SQL);
DataView dvTree = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = "ParentID ='" + AParentID + "'";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
Node.ImageUrl = Row[ImageUrl].ToString();
tree.Nodes.Add(Node);
Node.Expanded = Expanded;
FillTreeImageUrl(tree, Row[ID].ToString(), Node);
//再次遞歸
}
else
{
//̀添加當前節點的子節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
Node.ImageUrl = Row[ImageUrl].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = Expanded;
FillTreeImageUrl(tree, Row[ID].ToString(), Node);
//再次遞歸
}
}
}
public void FillTreeImageUrlNavigateUrl(TreeView tree, string AParentID, TreeNode pNode)
{
DataSet ds = DataProvider.GetDataSet(SQL);
DataView dvTree = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = "ParentID ='" + AParentID + "'";
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
Node.ImageUrl = Row[ImageUrl].ToString();
Node.NavigateUrl = Row[NavigateUrl].ToString();
tree.Nodes.Add(Node);
Node.Expanded = Expanded;
FillTreeImageUrlNavigateUrl(tree, Row[ID].ToString(), Node);
//再次遞歸
}
else
{
//̀添加當前節點的子節點
Node.Text = Row[TextNode].ToString();
Node.Value = Row[ValueNode].ToString();
Node.ImageUrl = Row[ImageUrl].ToString();
Node.NavigateUrl = Row[NavigateUrl].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = Expanded;
FillTreeImageUrlNavigateUrl(tree, Row[ID].ToString(), Node);
//再次遞歸
}
}
}
}

浙公网安备 33010602011771号