关于WinForm下数据查询的问题.100分等你拿,经验共享

时间:2021-11-21 14:35:08
我的问题是这样的.

    进入信息管理系统的功能模快,大多模块窗口都基于一个子类继承而来.一般而言这基类定义了一个工具栏.里面有新增,修改,保存,查找等功能.我的问题就是基于查询工具按钮上的,
     我看到有很多系统这样的实现方法:
        打开一个菜单进入数据编辑窗口(如:员工信息维护窗口),开始DataGrid中没有数据,点击"查找"工具按钮弹出一个查询窗口,这查询窗口里列出要填充显示数据集的所有列(DataGrid中的列),再对这些列设置条件后,确定就退出查询窗口返回,在数据编辑窗口的DataGrid中就显示查询到的数据,我要问的是就是这种方法是怎么实现的,(查询窗口里列出要填充显示数据集的所有列是怎么得到的,是数据库里对每个查询列已定义的吗>)

10 个解决方案

#1


首先,弹出窗口技术可以看类于多窗口传参之类的话题,一般是四五种方法,各有特点,“牛人”们也在打嘴架,所以选择你认为合适的方法就可以了。
其次,查询可以由多种方实实现,象楼主所说的“是数据库里对每个查询列已定义“。但这种方法根本就没有通用性,低一点的层次用构造SQL来实现。高一点的,一般都有通用的查询函数,可以构造出你所想要的查询。至于一般人所言ORM之类,你大可以不必吊它,因为它只是封装了一些操作而已,反而造成了你无法理解为什么结果是这个样子的。

#2


我现在做的也是差不多,我的列是通过手动添加的,因为有些列是不显示的.
所以要查询的列都是事先输入的.

#3


我希望不是从数据库里对每个查询进行配置,

也不是对每个功能模块的查询对应的做一个查询窗口.那样要做N个查询窗口.

当然如果没其它好方法也只能学着去适应.
同时也希望大家做过这方面的共享下你的成果.

把代码扎要的贴出来,或发到我的邮箱里:xiaoguaiboy@163.com
谢谢大家!

#4


动态查询是编程中一个非常普通的手法。楼主不要看入门之书,要多看别人写的代码。俺就不给代码了,因为俺也是垃圾一个,目前还有问题没有解决。

#5


定上去,

#6


查询窗口里列出要填充显示数据集的所有列是怎么得到的,是数据库里对每个查询列已定义的吗>)
----------------------------
当然是了,只是一个查询条件而已

#7


我也试图做个类似的 不是很成功 联表查询时 列出字段很麻烦  
那些列 我是通过 进入进入数据编辑窗口时的 传入一个查询所有列的sql语句 select * from ....   通过 Reader.GetSchemaTable(); 得到所有所查询的是数据集的字段列表

#8


查询功能在我以为是和筛选功能差不多的,我以前帮同学写了一个
程序,运行后在窗口中的DataGrid中显示所有数据,当点击"查询"时弹出一对话框,
用户可自己选择字段,字段中包含的文字进行筛选,只用了DataView的Filter
后来同学说那不能满足他的要求,他要在查找时弹出对话框,当用户填写好条件点击OK时定位到第一个符合条件的记录,"查找下一个"定位到下一符合条件的记录
我只好自己又给他写了一个类searchOption,实现了别的语言中的DataTable.locate功能
总觉得C#的DataView.Find的功能太少,如果你不自己写一个来代替,只能在数据填充前写好SQL查询字符串,但那样就不容易很好地和编辑等功能合在一起

#9


http://user.qzone.qq.com/784866864

#10


帮顶

#1


首先,弹出窗口技术可以看类于多窗口传参之类的话题,一般是四五种方法,各有特点,“牛人”们也在打嘴架,所以选择你认为合适的方法就可以了。
其次,查询可以由多种方实实现,象楼主所说的“是数据库里对每个查询列已定义“。但这种方法根本就没有通用性,低一点的层次用构造SQL来实现。高一点的,一般都有通用的查询函数,可以构造出你所想要的查询。至于一般人所言ORM之类,你大可以不必吊它,因为它只是封装了一些操作而已,反而造成了你无法理解为什么结果是这个样子的。

#2


我现在做的也是差不多,我的列是通过手动添加的,因为有些列是不显示的.
所以要查询的列都是事先输入的.

#3


我希望不是从数据库里对每个查询进行配置,

也不是对每个功能模块的查询对应的做一个查询窗口.那样要做N个查询窗口.

当然如果没其它好方法也只能学着去适应.
同时也希望大家做过这方面的共享下你的成果.

把代码扎要的贴出来,或发到我的邮箱里:xiaoguaiboy@163.com
谢谢大家!

#4


动态查询是编程中一个非常普通的手法。楼主不要看入门之书,要多看别人写的代码。俺就不给代码了,因为俺也是垃圾一个,目前还有问题没有解决。

#5


定上去,

#6


查询窗口里列出要填充显示数据集的所有列是怎么得到的,是数据库里对每个查询列已定义的吗>)
----------------------------
当然是了,只是一个查询条件而已

#7


我也试图做个类似的 不是很成功 联表查询时 列出字段很麻烦  
那些列 我是通过 进入进入数据编辑窗口时的 传入一个查询所有列的sql语句 select * from ....   通过 Reader.GetSchemaTable(); 得到所有所查询的是数据集的字段列表

#8


查询功能在我以为是和筛选功能差不多的,我以前帮同学写了一个
程序,运行后在窗口中的DataGrid中显示所有数据,当点击"查询"时弹出一对话框,
用户可自己选择字段,字段中包含的文字进行筛选,只用了DataView的Filter
后来同学说那不能满足他的要求,他要在查找时弹出对话框,当用户填写好条件点击OK时定位到第一个符合条件的记录,"查找下一个"定位到下一符合条件的记录
我只好自己又给他写了一个类searchOption,实现了别的语言中的DataTable.locate功能
总觉得C#的DataView.Find的功能太少,如果你不自己写一个来代替,只能在数据填充前写好SQL查询字符串,但那样就不容易很好地和编辑等功能合在一起

#9


http://user.qzone.qq.com/784866864

#10


帮顶