일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- numpy
- GraphQL
- flask
- FastAPI
- array
- tkinter Radio 동적버튼
- graphene-django
- allauth
- Django-allauth
- SQL
- python
- for loop
- Django
- check_password
- Today
- Total
객
메뉴 , 조직도 등등.....treeview 컨트롤 이용 본문
'닷넷 (.NET) 프로그래머' 에서 올라온 자료를 이용해서 작성한 것임.
[ .aspx] - 그대로 이용을 했다.
<div>
<asp:TreeView ID="treeview1" runat="server" onTreeNodePopulate="treeview1_TreeNodePopulate" OnSelectedNodeChanged="treeview1_SelectedNodeChanged" ShowLines="true">
<Nodes>
<asp:TreeNode Text="대학교" Value="대학교" PopulateOnDemand="true" Expanded="false"></asp:TreeNode>
</Nodes>
</asp:TreeView>
</div>
[.aspx.cs]
//cs 단도 그래로 이용한 것임. 약간 추가만 하였다.
public partial class _Default : System.Web.UI.Page
{
private string TreeNo;
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// treeview 컨트롤을 클릭 이벤트발생시킴
/// </summary>
protected void treeview1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
int _depth = e.Node.Depth;
switch (e.Node.Depth)
{
case 0:
FIllCustomers(e.Node);
break;
case 1:
FillOrders(e.Node);
break;
case 2:
FillSubOrders(e.Node);
break;
}
}
protected void FIllCustomers(TreeNode parent)
{
DataSet ds = GetDataSet("select distinct id , name from userTableName where pid = 0 order by name");
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode();
node.Text = row["name"].ToString();
node.Value = row["id"].ToString();
node.PopulateOnDemand = true;
node.SelectAction = TreeNodeSelectAction.SelectExpand;
parent.ChildNodes.Add(node);
}
}
protected void FillOrders(TreeNode parent)
{
DataSet ds = GetDataSet("select id , name , pid from userTableName where pid = '" + parent.Value + "'");
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode();
node.Value = row["id"].ToString();
node.Text = row["name"].ToString();
node.Value = row["pid"].ToString();
node.PopulateOnDemand = true;
node.SelectAction = TreeNodeSelectAction.SelectExpand;
parent.ChildNodes.Add(node);
}
}
//레벨이 2일때 이벤트가 일어나는 메서드 입니다.
protected void FillSubOrders(TreeNode parent1)
{
DataSet ds = GetDataSet("declare @cnt int select @cnt = id from userTableName where name='" + parent1.Text + "' select * from userTableName where pid = @cnt");
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode();
node.Text = row["name"].ToString();
node.Value = row["id"].ToString();
node.PopulateOnDemand = false; //다음 레벨의 이름이 있을시에 이것을 true로 바꾸어 주면 다음 레벨이 보여짐.
node.SelectAction = TreeNodeSelectAction.SelectExpand;
parent1.ChildNodes.Add(node);
}
}
protected void treeview1_SelectedNodeChanged(object sender, EventArgs e)
{
TreeNo = treeview1.SelectedValue.ToString();
}
private DataSet GetDataSet(string sql)
{
string connstr = @"Password=***********;Persist Security Info=True;User ID=user table;Initial Catalog=TreeMenu;Data Source=(local)";
SqlDataAdapter da = new SqlDataAdapter(sql, connstr);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
[db table]
create table userTableName
(
id int null,
name nvarchar(50) null ,
pid int null
)
'[PL] > C# & WPF' 카테고리의 다른 글
DateTime변환 (0) | 2012.05.31 |
---|---|
[펌] PHP(TIME() , MKTIME())과 비슷한 ASP.NET 메소드 (0) | 2012.05.30 |
[ASP.NET] 사용자 정의 컨트롤 사용 (0) | 2011.09.22 |
프로퍼티(Property) (0) | 2011.07.22 |
[c#.net] Request 객체와 Response객체 (0) | 2011.07.19 |