0

データベースに接続する前に、アプリケーションをテストするための一時データベースを作成したかったのです。TreeviewとDatagridviewの代替データベースからこれらのデータを入力したかったのです。私のツリービューは次のようになります。

管理者

  • グループ
    • ユーザー
      • デモ
      • 住む
  • マネジャー

ノードをクリックするたびに、対応するデータがDatagridviewに表示されます。「グループ」をクリックすると、「ユーザー」などのデータが「デモ」や「ライブ」などの対応するアカウントとともに表示されます。そして、「デモ」をクリックすると、対応するアカウントも表示されます。C#のリストを使用して代替データベースを作成するにはどうすればよいですか?ご回答ありがとうございます。

4

3 に答える 3

1

このようなクラスを作成します

public class TreeItem
{
  public int ID { set;get;}
  public string Name { set;get;}
  public List<TreeItem> Children {set;get;}
}

これで、このようなツリーを作成できます

var tree=new TreeItem();
tree.ID=1;
tree.Name="Group";

tree.Childrens=new List<TreeItem>();
var childUser=new TreeItem { ID=2, Name="User"};
tree.Childrens.Add(childUser);

childUser.Childrens=new List<TreeItem>();
var childDemo=new TreeItem { ID=3, Name="Demo"};
childUser.Childrens.Add(childDemo);

var childLive=new TreeItem { ID=4, Name="Live"};
childUser.Childrens.Add(childLive);

これはすべてをハードコーディングするだけです。理想的には、この階層データを XML に格納してから、XML をこのクラスにロードする必要があります。

于 2012-12-17T03:02:43.983 に答える
0

ここでパターンを探しているようです。

複合パターンがベストマッチだそうです!

サンプルコード (未コンパイル):

public interface IComponent{
    string Name{get;}
    IEnumerable<IComponent> Childrens{get;}
}
public class Group : IComponent{
    private List<User> _users;
    ---
    IEnumerable<IComponent> Childerns{ get{ return _users;}}
}
public class User : IComponent {
    private List<Demo> _demos;
    private List<Live> _lives;

    IEnumerable<IComponent> Childresn { get { return _demos.Cast<IComponent>().Union(_lives.Cast<IComponent>()); }}
}
public class Demo : IComponent{..}
public class Live : IComponent {..}
于 2012-12-17T03:26:49.950 に答える
0

@Shyjuで説明されている手動のソリューションは、少数のアイテムに適していますが。

より良いオプションは、AutoPocoのようなライブラリを使用することです。その使用法についての非常に優れた紹介が、このブログ投稿で Scott Hanselmann によって以前に説明されました。

Impose次の例は、Scott のブログ投稿から持ち上げたコードのわずかに変更されたバージョン (sans制約) です。

public void MakeTestData()
{
    IGenerationSessionFactory factory = AutoPocoContainer.Configure(x =>
    {
        x.Conventions(c => { c.UseDefaultConventions(); });
        x.AddFromAssemblyContainingType<SimpleUser>();
    });

    IGenerationSession session = factory.CreateSession();

    IList<SimpleUser> users = session.List<SimpleUser>(1000).Get();


}

にはIList<SimpleUser> users現在 1000 個SimpleUserのオブジェクトが含まれています。

于 2012-12-17T03:29:45.790 に答える