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[], drFirstLevelNode["StateName"].ToString().Trim());
这里的 treeList1.Columns[0] 就是我们添加的那一行(我自己理解的,不知道对不对,反正实践显示不添加就没法显示)。
最后附上完整的往dev treelist 中根据数据库中数据动态添加节点代码:
WellDAL dalWell = new WellDAL();
TreeListNode root = treeList1.AppendNode(null, null);
root.SetValue(treeList1.Columns[], "本地数据库");
//第一层节点
DataTable dtFirstLevelNode = new DataTable();
dtFirstLevelNode = dalWell.GetData("StateName");
foreach (DataRow drFirstLevelNode in dtFirstLevelNode.Rows)
{
TreeListNode FirstLevelNode = treeList1.AppendNode(null, root);
FirstLevelNode.SetValue(treeList1.Columns[], 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[], 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[], 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[], 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[], drFifthLevelNode["HoleNumber"].ToString().Trim());
}
}
}
}
}
}
}
}
}
treeList1.ExpandAll();
效果图:
10.17小结:table.copy() 和 distinct 查询的更多相关文章
- 2019.10.16&17小结
话说也蛮久没写小结了,主要这两次考试失分严重,还是总结下吧. 10.16 T1 小奇挖矿2 100/0 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市 ...
- 13.1.17 CREATE TABLE Syntax
13.1.17 CREATE TABLE Syntax 13.1.17.1 CREATE TABLE ... LIKE Syntax 13.1.17.2 CREATE TABLE ... SELECT ...
- legend3---12、DB::table('user_questions')和UserQuestion查询的结果的格式不一样
legend3---12.DB::table('user_questions')和UserQuestion查询的结果的格式不一样 一.总结 一句话总结: 推荐使用模型查找的方式,可以直接数组方式访问: ...
- 5月10日 python学习总结 单表查询 和 多表连接查询
一. 单表查询 一 语法 select distinct 查询字段1,查询字段2,... from 表名 where 分组之前的过滤条件 group by 分组依据 having 分组之后的过滤条件 ...
- 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)
[源码下载] 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果) 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTrans ...
- 发现struct proc_dir_entry内核3.10.17移到internal中去了,倒
struct proc_dir_entry 原:2.6.38.8 在#include <linux/proc_fs.h> 现:3.10.17 在fs/proc/internal.h:str ...
- Windows 8.1 正式版微软官方原版镜像下载(新增10/17新版下载)
中文版:中国区OEM预装版本,特定国家版,锁定语言,其它功能和核心版没有区别.简体中文单语言版:锁定语言,其它功能和核心版没有区别.专业版+核心版[零售版][推荐]:镜像内包含专业版(Professi ...
- Dell Technology Summit(2018.10.17)
时间:2018.10.17地点:北京国家会议中心
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
随机推荐
- springboot配置双数据源 MySQL和SqlServer
1. pom文件的驱动jar包加上去, compile 'com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8' 2. application.yml sprin ...
- 初始化bootstrap treeview树节点
最近在做启明星图库时,使用了Jquery Bootstrap Treeview插件.但是,遇到了一个初始化的问题.先看效果如下: 当用户打开图库时,左边分类第一个类别是“所有分类”,默认需要选中. ...
- APB协议
https://wenku.baidu.com/view/2663f629ef06eff9aef8941ea76e58fafab04592.html https://www.cnblogs.com/l ...
- OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像2
3.5.Canny边缘检测 OpenCV提供了Canny边缘检测函数来识别边缘.它有5个步骤:使用高斯滤波器对图像进行去噪.计算梯度.在边缘上使用最大抑制(NMS).在检测到的边缘上使用双阀值去除 假 ...
- 您的第一个C++Builder程序(Hello, world!)
最近有些老旧的项目是C++Builder开发的,虽然和Delphi的IDE的界面和操作十分相似,但是还是找本<C++ Builder 5 Developer's Guide>来看看熟悉下, ...
- 【Google设计冲刺】一种适合于创新小组的协作方式
传统的产品闭环是1.产品策划-2.研发-3.上线-4.等待市场反馈,4个步骤.对于一个创新项目来说,试错成本过高,等待周期过长[注释1].那么,有没有一种适合创新项目的协作方式呢?谷歌风投杰克·纳普发 ...
- iframe相关小结
父页面调用子页面方法, 子页面加载父页面传送的数据记录了父子间的调用和数据加载. 以下是另一些关于iframe的小结: 1:document.getElementById("ii" ...
- __NSArrayI __NSArray0 __NSSingleObjectArrayI __NSPlaceholderArray __NSArrayM
如果你的 全局 可变数组 前面 用了 copy修饰,那么 调用 arr addObjectsFromArray: 的时候 就 会崩溃,而且提示你 是 [__NSArray0 addObje ...
- Unity应用架构设计(3)——构建View和ViewModel的生命周期
对于一个View而言,本质上是一个MonoBehaviour.它本身就具备生命周期这个概念,比如,Awake,Start,Update,OnDestory等.这些是非常好的方法,可以让开发者在各个阶段 ...
- Jenkins自动部署增加http状态码校验
公司推进Jenkins自动化部署,因为web站点都是集群部署,部署需要测试指定服务器web服务是否成功启动,页面是否正常访问,经过不断baidu发现,python的request模块可以很好的解决这一 ...