分享人:蔡永坚
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中输入值。那么就无法选中了。如何解决使它像第二幅图的一样。
CSS中有z-index这个属性,值比较大的会遮住小的控件。
而框架combox中由以下部分组成
划蓝线的为下拉区域。
框架里设置下拉的区域与combox的输入框z-index都为1010,因此无法遮住。所以只要将下拉的区域的z-index值改成比输入框大才会遮住。
- 方法一:根据AD修改
#ctl00_AddPlaceHolder1_EPI_EngineSNdorpdowndiv {
z-index:1011;
- 方法二:修改class
.chosen-container .chosen-drop {
z-index:1011;
3. 数据库操作效率问题
假设以上页面姓名、入职时间、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];