렌더링 :
코드 :
[CSHARP]
System.Data을 사용함;
System.Web.UI.WebControls을 사용함;
/// <요약>
/// 드롭 다운 목록 트리 DataTable을 생성
/// </ 요약>
공용 클래스 DropDownListHelp
{
개인 문자열 그리드 선;
개인 DataTable을 DT;
공공 DropDownListHelp ()
{
//
// TODO : 여기에 추가 생성자 논리
//
}
/// <요약>
/// 드롭 다운 메뉴 트리 데이터 테이블 생성
/// </ 요약>
/// <매개 변수 이름 = "데이터 테이블"> </ PARAM>
키 필드 /// <매개 변수 이름 = "parentKeyField"> 상위 노드 </ PARAM>
/// <NAME = "parentKey"PARAM> 상위 노드 값 </ PARAM>
/// 키 필드 <매개 변수 이름 = "키 필드"> 노드 </ PARAM>
정렬 된 문자열 </ PARAM> /// <= "sortString"PARAM 이름>
/// <PARAM NAME = "DDL"> DownList </ PARAM>
공공 무효 createDropDownTree (DataTable의 데이터 테이블, 문자열 parentKeyField, 문자열 parentKey, 문자열 키 필드, 문자열에 textField, 문자열 sortString, DropDownList로 DDL)
{
이 데이터 테이블 (DT) =;
ddl.Items.Add (새을 ListItem ( "", ""));
addChildItems (parentKeyField, parentKey, 키 필드 트인 TextField, sortString, DDL);
}
/// <요약>
/// 스패닝 트리 노드 재귀
/// </ 요약>
키 필드 /// <매개 변수 이름 = "parentKeyField"> 상위 노드 </ PARAM>
/// <NAME = "parentKey"PARAM> 상위 노드 값 </ PARAM>
/// 키 필드 <매개 변수 이름 = "키 필드"> 노드 </ PARAM>
정렬 된 문자열 </ PARAM> /// <= "sortString"PARAM 이름>
/// <PARAM NAME = "DDL"> DownList 控件 </ PARAM>
/// <리턴> </ 반품>
개인 무효 addChildItems (문자열 parentKeyField, 문자열 parentKey, 문자열 키 필드, 문자열에 textField, 문자열 sortString, DropDownList로 DDL)
{
DataView를 DV = DataView를 새로운 (DT, parentKeyField + "=" "+ parentKey +" ' ", sortString, DataViewRowState.CurrentRows);
A = INT dv.Count;
경우 (dv.Count == 0)
{
반환;
}
대해 INT (I = 0; I <A; I ++)
{
그리드 선 = "";
dv.RowFilter = parentKeyField + "= '"+ parentKey + "'";
dv.Sort = sortString;
getTreeLine (parentKeyField, DV [I] [parentKeyField]로 .toString () 키 필드, DV [I] [키 필드]로 .toString () sortString);
dv.RowFilter = parentKeyField + "= '"+ parentKey + "'";
dv.Sort = sortString;
ddl.Items.Add (새을 ListItem (눈금 선 + (I == A - 1 '┗'? "┣") + DV [I]에 textField]로 .toString (), DV [I] [키 필드]로 .toString ( )));
addChildItems (parentKeyField, DV [I] [키 필드]로 .toString () 키 필드 트인 TextField, sortString, DDL);
}
dv.Dispose ();
}
/// <요약>
/// 다시 연결 라인에 걸쳐
/// </ 요약>
키 필드 /// <매개 변수 이름 = "parentKeyField"> 상위 노드 </ PARAM>
/// <NAME = "parentKey"PARAM> 상위 노드 값 </ PARAM>
/// 키 필드 <매개 변수 이름 = "키 필드"> 노드 </ PARAM>
/// <PARAM NAME = "nodeKey"> 노드 값 </ PARAM>
정렬 된 문자열 </ PARAM> /// <= "sortString"PARAM 이름>
/// <리턴> </ 반품>
개인 무효 getTreeLine (문자열 parentKeyField, 문자열 parentKey, 문자열 키 필드, 문자열 nodeKey, 문자열 sortString)
{
// 선택 부모 노드
DataView를 DV = DataView를 새로운 (DT, 키 필드 + "=" "+ parentKey +" ' ", sortString, DataViewRowState.CurrentRows);
경우 (dv.Count> 0)
{
부모 노드의 형제를 선택 //
dv.RowFilter = parentKeyField + "=" "+ DV [0] [parentKeyField]로 .toString () +" ' ";
dv.Sort = sortString;
대 (INT J = 0; J <dv.Count, J ++)
{
경우 (DV [J] [키 필드]로 .toString () == parentKey)
{
만약 (j == dv.Count - 1)
{
그리드 선 = ""+ 그리드 선;
}
그밖에
{
그리드 선 = "┃"+ 그리드 선;
}
}
}
getTreeLine (parentKeyField, DV [0] [parentKeyField]로 .toString () 키 필드, DV [0] [키 필드]로 .toString () sortString);
}
dv.Dispose ();
}
}
전화 :
[CSHARP]
DropDownListHelp ddlHelper 새로운 DropDownListHelp을 () =;
ddlHelper.createDropDownTree (DT 'parentID ","1 ","ID ","텍스트 ","텍스트 ASC "DropDownList1);