TreeView 바 인 딩 데이터베이스 자세히 알 아 보기
데이터베이스 구 조 는 다음 과 같다.
id(guid) pid(guid) name
18a83618-8751-47ef-91a0-e2dcde42bb71 **회사 명
c775c004-48ed-4664-8b0c-8fd26fea5f4e 18a83618-8751-47ef-91a0-e2dcde42bb71 A 부서
a43696f0-a906-4b4a-8abf-a01fb7d54daf c775c004-48ed-4664-8b0c-8fd26fea5f4e A 부서->1 팀
0d7fb83a-c056-482e-800b-52e20c74791b c775c004-48ed-4664-8b0c-8fd26fea5f4e A 부서->2 팀
de28685a-aaff-4876-abe1-bb003d17db64 18a83618-8751-47ef-91a0-e2dcde42bb71 B 부서
TreeView 에 연결 하 는 최종 효 과 는 다음 그림 과 같 습 니 다:
1.TreeView 컨트롤 새로 만 들 기
귀속
2.1 전통 적 인 방법(통 하지 않 음)
2.2 정확 한 방법:스스로 재 귀적 인 방법 을 구축한다.
2.2.1 재 귀 는 바로 방법의 중복 호출 이다.다음은 제 가 정리 한 두 가지 방법 입 니 다.초보 자 에 게 그 중의 코드 를 모 르 더 라 도 괜 찮 습 니 다.직접 복사 해서 사용 하면 됩 니 다.
#region TreeView
/// <summary>
/// TreeView( TreeNode)
/// </summary>
/// <param name="p_Node">TreeNode(TreeView )</param>
/// <param name="pid_val"> id </param>
/// <param name="id"> id </param>
/// <param name="pid"> id </param>
/// <param name="text"> </param>
protected void Bind_Tv(DataTable dt,TreeNode p_Node, string pid_val, string id, string pid, string text)
{
DataView dv = new DataView(dt);// DataTable DataView ,
TreeNode tn;// TreeView (TreeNode),
// , id , “ id is null” , “ id = id ”
string filter = string.IsNullOrEmpty(pid_val) ? pid+" is null" : string.Format(pid+"='{0}'", pid_val);
dv.RowFilter = filter;// DataView , id
foreach (DataRowView row in dv)
{
tn = new TreeNode();// ( : )
if (p_Node==null)//
{
tn.Value = row[id].ToString();// Value , id
tn.Text = row[text].ToString();// Text,
TreeView1.Nodes.Add(tn);// TreeView
Bind_Tv(dt,tn, tn.Value, id, pid, text);// ( , )
}
else//
{
tn.Value = row[id].ToString();// Value
tn.Text = row[text].ToString();// Text
p_Node.ChildNodes.Add(tn);//
Bind_Tv(dt,tn, tn.Value, id, pid, text);//
}
}
}
/// <summary>
/// TreeView( TreeNodeCollection)
/// </summary>
/// <param name="tnc">TreeNodeCollection(TreeView )</param>
/// <param name="pid_val"> id </param>
/// <param name="id"> id </param>
/// <param name="pid"> id </param>
/// <param name="text"> </param>
private void Bind_Tv(DataTable dt,TreeNodeCollection tnc, string pid_val, string id, string pid, string text)
{
DataView dv = new DataView(dt);// DataTable DataView ,
TreeNode tn;// TreeView (TreeNode),
// , id , “ id is null” , “ id = id ”
string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
dv.RowFilter = filter;// DataView , id
foreach (DataRowView drv in dv)
{
tn = new TreeNode();// ( : )
tn.Value = drv[id].ToString();// Value , id
tn.Text = drv[text].ToString();// Text,
tnc.Add(tn);// TreeNodeCollection( )
Bind_Tv(dt, tn.ChildNodes, tn.Value, id, pid, text);// ( , )
}
}
#endregion
2.2.2 호출2.2.3 데이터 에 대하 여
―테스트 데이터(역할:실제 데이터베이스 시트 를 모 의 하 는 것).이 방법의 역할 은 하나의 표를 만 드 는 것 이다.표 에는 세 개의 필드 가 있 는데 각각 id,부모 id,이름 이 고 그 다음 에 그 안에 데 이 터 를 삽입 하 는 것 이다.
private DataTable Test_Table()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("id", typeof(Guid)));//id guid
dt.Columns.Add(new DataColumn("parent_id", typeof(Guid)));// id guid
dt.Columns.Add(new DataColumn("name", typeof(string)));// string
//
dr = dt.NewRow();
var node0=dr[0] = Guid.NewGuid();
dr[1] = DBNull.Value;
dr[2] = "** ";
dt.Rows.Add(dr);
//
string[] department = { "A ", "B ", "C "};
for (int i = 0; i < department.Length; i++) {
dr = dt.NewRow();
var node1=dr[0] = Guid.NewGuid();
dr[1] = node0;//( )
dr[2] = department[i];
dt.Rows.Add(dr);
//
for (int j = 1; j < 4; j++)
{
dr = dt.NewRow();
dr[0] = Guid.NewGuid();
dr[1] = node1;
dr[2] = j+" ";
dt.Rows.Add(dr);
}
}
return dt;
}
-실제 데 이 터 는 데이터베이스 에 id,부모 id,이름 으로 세 개의 필드 를 만 든 다음 에 그 안에 데 이 터 를 삽입 해 야 합 니 다.주의해 야 할 것 은 첫 번 째 줄 데이터 의 부모 id 가 비어 있어 야 한 다 는 것 입 니 다.그리고 다음 과 같은 방법 으로 데이터베이스 에 있 는 데 이 터 를 꺼 냅 니 다.
/// <summary>
/// , DataTable
/// </summary>
/// <param name="str_Con"> </param>
/// <param name="str_Cmd">sql </param>
/// <returns></returns>
private DataTable exe_Table(string str_Con,string str_Cmd)
{
DataSet ds = new DataSet();
using (OracleConnection conn = new OracleConnection(str_Con))
{
using (OracleDataAdapter oda = new OracleDataAdapter(str_Cmd, conn))
{
conn.Open();
oda.Fill(ds);
}
}
return ds.Tables[0];
}
마지막 에!IsPost Back 호출
if (!IsPostBack)
{
Bind_Tv(exe_Table(" ", "select * from "), TreeView1.Nodes, null, "id ", " id ", " ");
}
이상 은 본 고의 모든 내용 입 니 다.여러분 이 TreeView 바 인 딩 데이터 베 이 스 를 능숙 하 게 파악 하 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ASP.NET TreeView 의 XML 데이터 원본 바 인 딩 인 스 턴 스 코드 구현TreeView 컨트롤 은 XML 문 서 를 데이터 원본 으로 사용 하고 XML 문서 의 계층 구조 에 따라 노드 를 표시 할 수 있 습 니 다.한편,XML 문서 의 접근 은 XmlDataSource 컨트롤 로 이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.