2017.9.11 关于条件查询、combox、数据库操作效率以及JS的几个问题

分享人:蔡永坚

1. 如何在C#操作数据库的时候实现”where one=1 and (two =2 or three=3)”的条件查询

xxDB.AddSearch(XXX.one, DbSearchTypeEnum.Equal, 1, DbUnionCondition.And);
DbSearchField dsf = new DbSearchField(DbUnionCondition.And);
dsf.AddChildSearch(new DbSearchField(XXX.two, DbSearchTypeEnum.Equal, 2, true, DbUnionCondition.Or));
dsf.AddChildSearch(new DbSearchField(XXX.three, DbSearchTypeEnum.Equal, 3, true, DbUnionCondition.Or));                 
statusDB.AddSearch(dsf);

2. combox中的问题

如图所示,第一幅图中combox(上级件件号)下拉的区域没有遮住另一个combox(部件件号),如果选择的位置正好在下面的combox的位置,系统会判断为在一个combox中输入值。那么就无法选中了。如何解决使它像第二幅图的一样。

image.png
image.png

CSS中有z-index这个属性,值比较大的会遮住小的控件。
而框架combox中由以下部分组成

image.png

划蓝线的为下拉区域。

image.png

框架里设置下拉的区域与combox的输入框z-index都为1010,因此无法遮住。所以只要将下拉的区域的z-index值改成比输入框大才会遮住。

  • 方法一:根据AD修改
#ctl00_AddPlaceHolder1_EPI_EngineSNdorpdowndiv {
                z-index:1011;

  • 方法二:修改class
.chosen-container .chosen-drop {
            z-index:1011;

3. 数据库操作效率问题

image.png

假设以上页面姓名、入职时间、email在表1中
姓名、性别、联系电话在表2中,
姓名、生日在表3中。
姓名、科室在表4中。
因为查询条件分别在3个表中,所以用视图查询比较方便。因此我建了个这4个表的视图用于查询这个页面,发现查询需要3-4秒。如何优化?

Select-------
fromt1 
innerjoin t2 on t2.name=t1.name
innerjoin t3 on t3.name=t1.name
innerjoin t4 on t4.name=t1.name
where------

总结:把有搜索条件的字段用视图方式查出来,没有搜索要求的直接在页面上查出来显示可以有效地提高数据库操作效率。通过这种方式,可将查询时间优化到0.5秒以内。

4. js问题:以下三个输出是什么?

(1)   
<script>
        function fn(a, b) {
            return a - b;
        }
        alert (fn(3, 2));
        function fn(a, b) {
            return a + b;
        }
        alert(fn(3, 2));
    </script>
(2)  
<script>
        var a = 10;
        function fn() {
            alert(a);
            var a = 2;
            alert(a);
        }
        fn();
        alert(a);
    </script>
(3)  
   <script>
        function add(a, b) {
            return a - b;
        }
        alert(add(3, 2));
        function add(a, b, c) {
            return a + b + c;
        }
        alert(add(3, 2, 5, 6));
    </script>

(1)5,5
解释:一个<script>标签内的所有代码执行时会进行预编译,如果发现两个方法相同则会调用下面的方法,因此调用的是return a + b;

(2)undefined,2,10
同样是预编译,加载fn时有局部变量时会只取局部变量,第一个undefined是因为它已知有fn方法内有变量a,但在alert时并没有取到它的值,所以会弹出undefined。后边的两个依照第一问思路即可很好理解。

(3)NaN,10
JS中不存在重载,只有覆盖,不管有多少个参数,方法名相同它就是同一个方法。
Js方法通过数组arguments获得数组,return a+b+c; 其实等于return arguments[0]+ arguments[1]+ arguments[2];

image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 遭遇病厄是每个人都要面对的命题,理解生活要比生活本身容易很多。 堂弟得尿毒症五年了。 疾病来时毫无征兆。那个夏夜,...
    全民故事计划阅读 373评论 1 3
  • 1. coin v. to invent a new word or expression, or to use ...
    小芷芷阅读 480评论 0 0