マイナーでもいいよね??

殆どVB系、でも .NET じゃない VB は知らないよん

目次

Blog 利用状況

書庫

日記カテゴリ

所属しているすべてのグループを表示する画面のWebアプリのコード(C#)

所属しているすべてのグループを表示する画面の Web アプリの C# のコードです。

//プライベートフィールド

private DomainObject member;  //メンバー

private Dictionary<string, DomainGroup> allGroups;  //全グループ(Key:distinguishedName)

private List<string> addedDistinguishedNames;   //リストに追加したグループの識別名

 

//イベントハンドラ

protected void Page_Load(object sender, EventArgs e)

{

  var name = Request.QueryString["name"];   //名前

  if (String.IsNullOrEmpty(name))

  {

    return;

  }

 

  CategoryType category;  //Directory オブジェクトの種類

  if (Enum.TryParse<CategoryType>(Request.QueryString["category"], out category) == false)

  {

    return;

  }

  if (this.IsPostBack)

  {

    return;

  }

 

  switch (category)   //Directory オブジェクトの種類

  {

    case CategoryType.User:

      member = DomainUser.FindByName(name);   //ユーザーを検索

      break;

    case CategoryType.Group:

      member = DomainGroup.FindByName(name);  //グループを検索

      break;

    case CategoryType.Computer:

      member = Computer.FindByName(name);     //コンピューターを検索

      break;

  }

  if (member == null)

  {

    return;

  }

 

  allGroups = DirectoryAccess.GetGroups<DomainGroup>().ToDictionary(

    group => group.Entry.Properties["distinguishedName"].Value.ToString(), group => group);

  addedDistinguishedNames = new List<string>();

  this.AddChildNode();  //子ノードを追加

  this.GroupListBox.DataSource = CreateGroupTable();  //データソース用のテーブルを作成

  this.GroupListBox.DataTextField = "Text";

  this.GroupListBox.DataValueField = "Value";

  if (addedDistinguishedNames.Count > 1)

  {

    this.GroupListBox.Style.Add(HtmlTextWriterStyle.BorderStyle, "None");

  }

  else

  {

    this.ViewRadioButtonList.Enabled = false;

  }

  this..GroupListBox.DataBind();

  member.Dispose();

  DirectoryAccess.DisposeItems(allGroups.Values);

}

 

protected void ViewRadioButtonList_SelectedIndexChanged(object sender, EventArgs e)

{

  this.GroupTreeView.Visible = this.ViewRadioButtonList.SelectedIndex == 0;

  this.GroupListBox.Visible = !this.GroupTreeView.Visible;

}

 

//プライベートメソッド

//子ノードを追加

private void AddChildNode()

{

  var node = new TreeNode(member.ToString(), member.Name);

  this.GroupTreeView.Nodes.Add(node);

  if ((member.Category == CategoryType.User) || (member.Category == CategoryType.Computer))

  {

    //プライマリー グループを追加

    var primaryGroupId = (member.Category == CategoryType.User) ?

      ((DomainUser)member).PrimaryGroupId : ((Computer)member).PrimaryGroupId;

    var group = allGroups.Values.Cast<DomainGroup>().Single(grp => grp.Token == primaryGroupId);

    this.AddChildNode(node, group);   //子ノードを追加

  }

  //所属するグループを追加

  foreach (string memberOf in member.Entry.Properties["memberOf"])

  {

    this.AddChildNode(node, allGroups[memberOf]);   //子ノードを追加

  }

}

 

//子ノードを追加

private void AddChildNode(TreeNode node, DomainGroup group)

{

  var displayName = String.Format("{0}({1})", group.Name, group.Scope);   //表示するテキスト

  var distinguishedName = group.Entry.Properties["distinguishedName"].Value.ToString();   //識別名

  var childNode = new TreeNode(displayName, group.Name);  //ノードを作成

  node.ChildNodes.Add(childNode);

  if (addedDistinguishedNames.Contains(distinguishedName) == false)

  {

    addedDistinguishedNames.Add(distinguishedName);   //識別名を追加

  }

  //ネストしているグループを追加

  foreach (string memberOf in group.Entry.Properties["memberOf"])

  {

    this.AddChildNode(childNode, allGroups[memberOf]);  //子ノードを追加

  }

}

 

//データソース用のテーブルを作成

private DataTable CreateGroupTable()

{

  var table = new DataTable();

  table.Columns.Add(new DataColumn("Value", typeof(string)));   //値(distinguishedName)

  table.Columns.Add(new DataColumn("Text", typeof(string)));    //表示するテキスト

  foreach (var distinguishedName in addedDistinguishedNames)

  {

    var row = table.NewRow();

    var group = allGroups[distinguishedName];

    var displayName = String.Format("{0}({1})", group.Name, group.Scope);

    row[0] = distinguishedName;

    row[1] = displayName;

    table.Rows.Add(row);

  }

  return table;

}

 

内容的には Windows アプリと同じです。説明は VB の方に書いてますのでそちらをご覧ください。

 

 

Active Directory 関連 Blog

http://www.pbyk.com/blog/bloglist.html

投稿日時 : 2015年1月10日 3:24

コメントを追加

# ブルガリコピー 2017/07/12 13:37 luzkodtixo@outlook.com

2017年の新素材-新作
ブランド腕時計、バッグ、財布、小物などでございます専売店
★弊社は「信用第一」をモットーにお客様にご満足頂けるよう
★全物品運賃無料(日本全国)
★不良品物情況、無償で交換します.
★税関没収する商品は再度無料で発送します!
ブルガリコピー http://www.msnwatchs.com

# OrcWUpPSiYiPVnlOEM 2017/07/31 0:26 JimmiXzSqc

rbZhRr http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

# ブランドバッグ 2017/08/03 21:01 nruxqg@outlook.com

時計,バッグ,財布,ルイヴィトンコピー,エルメスコピー
弊店に主要な販売する商品は時計,バッグ,財布,ルイヴィトンコピー,エルメスコピー,
シャネルコピー,グッチコピー,プラダコピー,ロレックスコピー,カルティエコピー,オメガコピー,
ウブロ コピーなどの世界にプランド商品です。2006年に弊社が設立された、
弊社は自社製品を世界中に販売して、高品質な製品と優れたアフターサービスで、
過半数の消費者からの良い評判を獲得していた。我々自身の生産拠点と生産設備を持って、
製品の質を保証すると消費者にサポートするために、製品も工場で厳格な人工的なテストを受けました。
消費者の継続的なサポートに感謝するために、そして、企業が低コスト、高品質な製品を提供してあげます。
弊店に望ましい製品を見つけることを願って。ここで、弊社が皆の仕事でも幸せな人生でも成功することを望んてあげます。

誠にありがとうございます。
ブランドバッグ http://www.ginza66.com

# ロレックス時計コピー 2021/12/07 20:59 pnghmpesc@live.jp

ヴィトンコピー品激安販売店2019新品大SALE
ルイ・ヴィトンコピー品激安販売店の新品大SALEが開催します。
ルイヴィトン人気コピー品、コピールイヴィトン新作、ルイヴィトンダミエコピー、ルイヴィトンモノグラムコピー、コピーブランド腕時計…
いろいろ新品が続々登場します。バッグ、靴、帽子、スカーフ...
お綺麗を展示ため、ぜひおすすめの逸品です。
時間の制限がない、いつでもご愛用頂きます。

# can i order prednisone 2024/08/06 18:54 Stevenput

online order prednisone 10mg https://prednisonebestprice.pro/# prednisone 2.5 mg cost
prednisone for sale

# lasix generic name 2024/08/20 10:03 DanielEruts

Misoprostol 200 mg buy online http://furosemide.win/# lasix furosemide 40 mg
lasix dosage

# lasix uses 2024/08/20 22:35 DanielEruts

Abortion pills online https://tamoxifen.bid/# tamoxifen for men
lasix pills

# furosemida 2024/08/21 12:58 DanielEruts

purchase cytotec https://furosemide.win/# generic lasix
lasix 20 mg

# lasix 100 mg tablet 2024/08/22 17:55 DanielEruts

buy cytotec online fast delivery https://tamoxifen.bid/# aromatase inhibitors tamoxifen
lasix uses

# furosemide 100 mg 2024/08/23 20:27 DanielEruts

cytotec buy online usa https://furosemide.win/# furosemide 100 mg
lasix 20 mg

# vavada зеркало 2024/09/05 18:14 Warrenpseut

https://pin-up.diy/# pin up казино

# вавада рабочее зеркало 2024/09/06 9:26 Warrenpseut

https://vavada.auction/# vavada зеркало

# gates of olympus demo 2024/09/19 22:58 GeorgeMum

https://gatesofolympusoyna.online/# gates of olympus demo

# gates of olympus demo turkce oyna 2024/09/20 15:02 GeorgeMum

https://casibom.auction/# casibom giris

# gates of olympus oyna demo 2024/09/21 7:54 GeorgeMum

http://gatesofolympusoyna.online/# gates of olympus oyna demo

# sildenafilo 100mg precio espaГ±a 2024/09/21 21:06 DennisevElp

https://farmaciaeu.com/# farmacia online barata

# farmacia online madrid 2024/09/21 22:56 FloydUnorm

http://tadalafilo.bid/# farmacia online envГ­o gratis
farmacia online barata y fiable

# farmacia online envГ­o gratis 2024/09/22 15:21 FloydUnorm

http://farmaciaeu.com/# farmacia online envГ­o gratis
farmacia online barata

# can i buy ventolin over the counter in nz 2024/09/28 5:50 Sergiodab

http://furosemide.men/# lasix uses

# no prescription ventolin hfa 2024/09/29 14:53 Sergiodab

https://ventolininhaler.pro/# ventolin brand

# Pharmacie sans ordonnance 2024/10/04 3:47 StephenWadly

https://pharmaciepascher.pro/# pharmacie en ligne

# trouver un mГ©dicament en pharmacie 2024/10/06 6:35 StephenWadly

http://clssansordonnance.icu/# п»?pharmacie en ligne france

タイトル
名前
URL
コメント