レンダリング:
コード:
[Cシャープ]
System.Dataを使用しました。
System.Web.UI.WebControlsを使用しました。
/// <要約>
DataTableを生成///ドロップダウンリストツリー
/// </要約>
パブリッククラスDropDownListHelp
{
プライベート文字列のグリッド線。
民間のDataTable dtは、
公共DropDownListHelp()
{
//
// TODO:ここに追加コンストラクタロジック
//
}
/// <要約>
DATATABLEを生成///ドロップダウンメニューツリー
/// </要約>
///ます。<param name = "データテーブル"> </ param>の
キーフィールド///ます。<param name = "parentKeyField">上位ノード</ param>の
/// <名前= "parentKey" param>の上位ノード値</ PARAM>
///キーフィールドます。<param name = "keyField">ノード</ param>の
///ます。<param name = "sortString">文字列</ param>のソート
///ます。<param name = "DDL"> DownList </ param>の
公共のボイドcreateDropDownTree(DataTableのデータテーブル、文字列parentKeyField、文字列parentKey、文字列keyField、文字テキストフィールド、文字列sortString、DropDownListコントロールDDL)
{
DT =データテーブル。
ddl.Items.Add(新しいリストアイテム( ""、 ""));
addChildItems(parentKeyField、parentKey、keyField、テキストフィールド、sortString、DDL)。
}
/// <要約>
///スパニングツリーノードの再帰
/// </要約>
キーフィールド///ます。<param name = "parentKeyField">上位ノード</ param>の
/// <名前= "parentKey" param>の上位ノード値</ PARAM>
///キーフィールドます。<param name = "keyField">ノード</ param>の
///ます。<param name = "sortString">文字列</ param>のソート
///ます。<param name = "DDL"> DownList控件</ param>の
/// <リターン> </リターン>
プライベート無効addChildItems(文字列parentKeyField、文字列parentKey、文字列keyField、文字テキストフィールド、文字列sortString、DropDownListコントロールDDL)
{
DataViewのDV =新しいのDataView(dtは、parentKeyField + "= '" + parentKey + "'"、sortString、DataViewRowState.CurrentRows)。
int型、A = dv.Count。
(dv.Count == 0)の場合
{
リターン;
}
以下のために(int型私は= 0; I <; I ++)
{
グリッド線= "";
dv.RowFilter = parentKeyField + "= '" + parentKey + "'";
dv.Sort = sortString。
getTreeLine(parentKeyField、DV [I] [parentKeyField] .ToString()、keyField、DV [I] [keyField] .ToString()、sortString)。
dv.RowFilter = parentKeyField + "= '" + parentKey + "'";
dv.Sort = sortString。
ddl.Items.Add(新しいのListItem(グリッド線+(I == - 1 "┗":? "┣")+ DV [i]の[テキストフィールド] .ToString()、DV [i]の[keyField] .ToString( )));
addChildItems(parentKeyField、DV [I] [keyField] .ToString()、keyField、テキストフィールド、sortString、DDL)。
}
dv.Dispose();
}
/// <要約>
///バック接続線にまたがります
/// </要約>
キーフィールド///ます。<param name = "parentKeyField">上位ノード</ param>の
/// <名前= "parentKey" param>の上位ノード値</ PARAM>
///キーフィールドます。<param name = "keyField">ノード</ param>の
/// <PARAM NAME = "nodeKey">ノードの値</ PARAM>
///ます。<param name = "sortString">文字列</ param>のソート
/// <リターン> </リターン>
プライベート無効getTreeLine(文字列parentKeyField、文字列parentKey、文字列keyField、文字列nodeKey、文字列sortString)
{
//選択した親ノード
DataViewのDV =新しいのDataView(dtは、keyField + "= '" + parentKey + "'"、sortString、DataViewRowState.CurrentRows)。
(dv.Count> 0)であれば
{
//親ノードの兄弟を選択
dv.RowFilter = parentKeyField + "= '" + DV [0] [parentKeyField] .ToString()+ "'"。
dv.Sort = sortString。
以下のための(int型J = 0; jの<dv.Countあり、j ++)
{
IF(DV [J] [keyField] .ToString()== parentKey)
{
もし(J == dv.Count - 1)
{
グリッド線=「」+グリッド線。
}
そうしないと
{
グリッド線=「┃」+グリッド線。
}
}
}
getTreeLine(parentKeyField、DV [0] [parentKeyField] .ToString()、keyField、DV [0] [keyField] .ToString()、sortString)。
}
dv.Dispose();
}
}
コール:
[Cシャープ]
DropDownListHelp ddlHelper =新しいDropDownListHelp();
ddlHelper.createDropDownTree(DT、 "PARENTID"、 "1"、 "ID"、 "テキスト"、 "テキストASC"、DropDownList1の)。