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();
效果图: