• 10.17小结:table.copy() 和 distinct 查询


    1. 当datatable 已存在于一个dataset中时,可以使用 ds.tables.add(dt.copy()) 来向dataset 中添加datatable;

    2. 当datarow已存在于一个dtA中时,可以使用dtB.importRow(dr)来向dtB中添加datarow;

    2. 在查询表格时,如果想查询两个字段,只当两个字段都相同时才过滤重复保留唯一,否则不过滤,这是可以这样使用distinct:

    select  distinct  a, b  from  table1

    3. 今天在往devexpress 中的treelist 控件中添加节点时,发现虽然添加上了但是界面不显示节点值,解决办法是在设计器里先给treelist添加一个列(当然,我的需求是只有一列的情况下),然后隐藏它即可。为什么要添加一列呢?因为在后台代码里我们是这样写的:

    TreeListNode FirstLevelNode = treeList1.AppendNode(null, root);
    FirstLevelNode.SetValue(treeList1.Columns[0], drFirstLevelNode["StateName"].ToString().Trim());

    这里的  treeList1.Columns[0]  就是我们添加的那一行(我自己理解的,不知道对不对,反正实践显示不添加就没法显示)。

    最后附上完整的往dev treelist 中根据数据库中数据动态添加节点代码:

    WellDAL dalWell = new WellDAL();
                TreeListNode root = treeList1.AppendNode(null, null);
                root.SetValue(treeList1.Columns[0], "本地数据库");
                //第一层节点
                DataTable dtFirstLevelNode = new DataTable();
                dtFirstLevelNode = dalWell.GetData("StateName");
                foreach (DataRow drFirstLevelNode in dtFirstLevelNode.Rows)
                {
                    TreeListNode FirstLevelNode = treeList1.AppendNode(null, root);
                    FirstLevelNode.SetValue(treeList1.Columns[0], drFirstLevelNode["StateName"].ToString().Trim());
                    //第二层节点
                    DataTable dtSecondLevelNode = new DataTable();
                    dtSecondLevelNode = dalWell.GetData("StateName", "FieldName");
                    foreach (DataRow drSecondLevelNode in dtSecondLevelNode.Rows)
                    {
                        if (drSecondLevelNode["StateName"].ToString().Trim() == drFirstLevelNode["StateName"].ToString().Trim())
                        {
                            TreeListNode SecondLevelNode = treeList1.AppendNode(null, FirstLevelNode);
                            SecondLevelNode.SetValue(treeList1.Columns[0], drSecondLevelNode["FieldName"].ToString().Trim());
                            //第三层节点
                            DataTable dtThirdLevelNode = new DataTable();
                            dtThirdLevelNode = dalWell.GetData("StateName", "FieldName", "BlockName");
                            foreach (DataRow drThirdLevelNode in dtThirdLevelNode.Rows)
                            {
                                if (drThirdLevelNode["StateName"].ToString().Trim() == drFirstLevelNode["StateName"].ToString().Trim() && drThirdLevelNode["FieldName"].ToString().Trim() == drSecondLevelNode["FieldName"].ToString().Trim())
                                {
                                    TreeListNode ThirdLevelNode = treeList1.AppendNode(null, SecondLevelNode);
                                    ThirdLevelNode.SetValue(treeList1.Columns[0], drThirdLevelNode["BlockName"].ToString().Trim());
                                    //第四层节点
                                    DataTable dtForthLevelNode = new DataTable();
                                    dtForthLevelNode = dalWell.GetData("StateName", "FieldName", "BlockName", "WellName");
                                    foreach (DataRow drForthLevelNode in dtForthLevelNode.Rows)
                                    {
                                        if (drForthLevelNode["StateName"].ToString().Trim() == drFirstLevelNode["StateName"].ToString().Trim() && drForthLevelNode["FieldName"].ToString().Trim() == drSecondLevelNode["FieldName"].ToString().Trim() && drForthLevelNode["BlockName"].ToString().Trim() == drThirdLevelNode["BlockName"].ToString().Trim())
                                        {
                                            TreeListNode ForthLevelNode = treeList1.AppendNode(null, ThirdLevelNode);
                                            ForthLevelNode.SetValue(treeList1.Columns[0], drForthLevelNode["WellName"].ToString().Trim());
                                            //第五层节点
                                            DataTable dtFifthLevelNode = new DataTable();
                                            dtFifthLevelNode = dalWell.GetData("StateName", "FieldName", "BlockName", "WellName", "HoleNumber");
                                            foreach (DataRow drFifthLevelNode in dtFifthLevelNode.Rows)
                                            {
                                                if (drFifthLevelNode["StateName"].ToString().Trim() == drFirstLevelNode["StateName"].ToString().Trim() && drFifthLevelNode["FieldName"].ToString().Trim() == drSecondLevelNode["FieldName"].ToString().Trim() && drFifthLevelNode["BlockName"].ToString().Trim() == drThirdLevelNode["BlockName"].ToString().Trim() && drFifthLevelNode["WellName"].ToString().Trim() == drForthLevelNode["WellName"].ToString().Trim())
                                                {
                                                    TreeListNode FifthLevelNode = treeList1.AppendNode(null, ForthLevelNode);
                                                    FifthLevelNode.SetValue(treeList1.Columns[0], drFifthLevelNode["HoleNumber"].ToString().Trim());
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                treeList1.ExpandAll();

     效果图:

  • 相关阅读:
    【转载】 Deepmind星际争霸2平台使用第一轮-完成采矿
    【转载】 星际争霸2的AI环境搭建
    【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
    【转载】 强化学习在美团“猜你喜欢”的实践
    【转载】 强化学习(七)时序差分离线控制算法Q-Learning
    【转载】 强化学习(六)时序差分在线控制算法SARSA
    【转载】 强化学习(五)用时序差分法(TD)求解
    【转载】 强化学习(四)用蒙特卡罗法(MC)求解
    ubuntu 系统网络突然"网络已禁用"
    健康日志之口腔粘膜----7-13
  • 原文地址:https://www.cnblogs.com/Alex1994/p/9805891.html
Copyright © 2020-2023  润新知