0

在连接到我们的数据库之前,我想创建一个临时数据库来测试我的应用程序。我想从 Treeview 和 Datagridview 中的替代数据库中填充这些数据。我的树视图看起来像这样:

行政人员

  • 团体
    • 用户
      • 演示
      • 居住
  • 经理

每次我单击一个节点,相应的数据都会出现在我的 Datagridview 中。就像当我点击“组”时,它下面的数据,如“用户”等,会出现相应的帐户,如“演示”和“直播”。而当我点击“Demo”时,它对应的账户也会出现。如何在 c# 中使用 List 做我的替代数据库?非常感谢您的回复。

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

尽管@Shyju描述的手动解决方案适用于少量项目。

更好的选择是使用像AutoPoco这样的库。Scott Hanselmann 不久前在这篇博客文章中描述了关于其使用的非常好的介绍。

Impose以下示例是从 Scott 的博客文章中提取的代码的略微修改版本(无约束):

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 回答
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 回答