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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vuetify의 treeview를 IE11로 표시했을 때의 스타일 무너짐에 대해이전에, Vuetify를 조사하고 있을 때, treeview를 IE11로 표시했을 때에 미묘하게 스타일이 무너지는 것을 깨달았다. 일단, 아래와 같이 Vuetify는 Polyfill 적용으로 IE11에도 대응하고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.