Data层相关问题 & JS循环取值

第一次写博客,里面是自己工作中碰到的问题及总结的知识点,便于自己以后回顾,技术大牛们请直接忽略这篇文章,也希望能帮助到想我这样的小白!

Data层相关问题总结:

1. 代码管理用的是 VSS 2005;

改好程序后,必须要重新生成下;(注意文件之间的引用关系的顺序),程序改的是对的,也在本地保存了,断点调试的时候还是之前没有改的代码,郁闷了好久。别的引用没有更新,害惨我了。

第一次碰到,不了解,白白浪费了两天的时间,两天的时间,还破坏了我周末的心情!

2. SQL语句写好后,注意起中英文之间的输入:

Data:

1 //把字符串转化成Int类型的值;
2                 searchSql.AppendLine("AND (CHARINDEX(‘,‘ +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)");
3                 searchSql.AppendLine("or ((CHARINDEX(‘,‘ +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0) and (CHARINDEX(‘,‘ +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0))");
4                 searchSql.AppendLine("OR ((CHARINDEX(‘,‘ +LTRIM(A.DeptWorkID),(@DeptID))>0 or CHARINDEX(RTRIM(A.DeptWorkID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0) and (DeptCompilationID is null or DeptCompilationID=0 or (CHARINDEX(‘,‘ +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)))");//and A.DeptCompilationID is null
5                 comm.Parameters.Add(SqlHelper.GetParameterFromString("@DeptID", searchModel.Dept));

SQL:

1 select distinct top 100 DeptID,* from officedba.EmployeeInfo A --where DeptID in (247,248)
2 where
3 (CHARINDEX(‘,‘ +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)--A.DeptCompilationID = @DeptID)
4 OR ((CHARINDEX(‘,‘ +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0) and (CHARINDEX(‘,‘ +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0))
5 OR ((CHARINDEX(‘,‘ +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0) and (DeptCompilationID is null or DeptCompilationID=0 or (CHARINDEX(‘,‘ +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+‘,‘,(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)))
6
7  

关于中英文之间的输入法的问题,可害苦我了,就查“)”是中文的还是英文的浪费了我十几分钟,既费神,又费力,关键是浪费心情;以后只要是在VS或SQL中写代码,一定要切换到英文输入法下,不许再搜狗输入法下偷懒写;

以后一定要多注意细节,细节,细节的东西!

3. 用户未处理SqlException,在将 nvarchar 值 ‘247,248‘ 转换成数据类型 int 时失败。

解决问题的相关查找:http://bbs.csdn.net/topics/310077684

(CHARINDEX(‘,‘ +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+‘,‘,(@DeptID))>0)

JS循环取值总结:

1.

其中有三列的值(含有Total字符串的列)是本行前面的所有和,不需要改动;

如果需要修改的是三列中的其中一列,默认是不改变它的值的,但是没有弹出alert提示,日后研究;

表有三行,最后一行为合计等等。。。 不需要修改;

只需要遍历“史小沁”和“高万顺”两行就行;

如果输入原工资为最后一行的数据,会有alert提示;

JS:

 1 function AllUpdate() {
 2
 3    var table = document.getElementById("tblSalaryDetail");    //取到表中的数据
 4     //获取表格行数
 5     var tableCount = table.rows.length;
 6     var CountNum = 0;
 7     var NowSal = document.getElementById("JBGZ").value.Trim(); //显示“原工资”文本框
 8     var ModifedSal = document.getElementById("JiangJ").value.Trim();//显示“修改后工资”文本框
 9 //    var textinput = table.getElementsByTagName("input");
10     if (ModifedSal != "")
11     {
12         for (var row = 1; row < tableCount; row++) //遍历表的行
13         {
14             var rowIndex = table.rows[row - 1];
15             var textinput = rowIndex.getElementsByTagName("input"); //用“input”属性取到input对应的每一个值
16             for (var i = 1; i < textinput.length; i++) //遍历某一行的input文本框
17             {
18                 if (textinput[i].value == parseInt(NowSal) )            // && (textinput.id.indexOf(‘TotalOne_‘) <= -1)   && (textinput.id.indexOf(‘TotalTwo_‘) <= -1) && (textinput.id.indexOf(‘Total_‘) <= -1)) //parseInt显示的把文本框中的内容转化为Int类型的
19                 {
20                     textinput[i].value = ModifedSal; //赋值
21                     CountNum++;
22                 }
23             }
24             CalculateTotalSalary("", row);
25         }
26         if (CountNum == 0)
27         {
28             alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。");
29         }
30     }
 1 function AllUpdate() {
 2     table = document.getElementById("tblSalaryDetail");
 3
 4 //    var SubTotal = table.getElementsByTagName("Total_");
 5
 6     //获取表格行数
 7     var tableCount = table.rows.length;
 8
 9     var CountNum = 0;
10
11     var NowSal = document.getElementById("JBGZ").value.Trim();
12     var ModifedSal = document.getElementById("JiangJ").value.Trim();
13
14 //    var Totalone = table.rows[0].cells[9].innerHTML;
15 //    var Totaltwo = table.rows[0].cells[16].innerHTML;
16 //    var Totalthree = table.rows[0].cells[17].innerHTML;
17
18 //    var Total = "Total";
19 //&& (table[i].id).substring(0,5) != Total
20
21     var textinput = table.getElementsByTagName("input");
22
23 //    var Totalone = textinput[9].value;
24
25     if (ModifedSal != "") {
26
27         for (var row = 1; row < tableCount-1; row++) {
28
29             for (var i = 1; i < textinput.length; i++) {
30
31                 var str = textinput[i].value;
32                 //                var one = textinput.id.indexof(‘TotalOne_‘);
33 //                var two=("TotalOne_").indexof(‘TotalOne_‘);
34
35                 if (textinput[i].value == parseInt(NowSal)) //&& (textinput.id.indexof(‘TotalOne_‘) <= -1)   && (textinput.id.indexof(‘TotalTwo_‘) <= -1) && (textinput.id.indexof(‘Total_‘) <= -1)
36                 {
37
38                     textinput[i].value = ModifedSal;
39                     CountNum++;
40                 }
41             }
42             CalculateTotalSalary("", row);
43         }
44
45         if (CountNum == 0) {
46
47             alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。");
48         }
49
50  
 1 if (ModifedSal != "") {
 2
 3         for (var row = 1; row < tableCount-1; row++) {
 4
 5             for (var i = 1; i < textinput.length; i++) {
 6
 7                 var str = textinput[i].value;
 8                 if (textinput[i].value == parseInt(NowSal)) //&& (textinput.id.indexof(‘TotalOne_‘) <= -1)   && (textinput.id.indexof(‘TotalTwo_‘) <= -1) && (textinput.id.indexof(‘Total_‘) <= -1)
 9                 {
10                     textinput[i].value = ModifedSal;
11                     CountNum++;
12                 }
13             }
14             CalculateTotalSalary("", row);
15         }
16
17         if (CountNum == 0)
18
19   {
20
21             alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。");
22        }
23     }

  错误的:

 1   for (var row = 1; row < tableCount; row++)
 2     {
 3         //批量更新工资
 4
 5         row = table.rows[row];
 6
 7 //        alert(row);
 8
 9         for (var col = 1; col < row.cells.length; col++) {
10
11 //            alert(col);
12 //            alert(row.cells[col].innerHTML);
13
14             if (row.cells[col].innerHTML == valu) {
15
16                 row.cells[col].innerHTML = v1;
17
18                 CalculateTotalSalary("", row);
19
20             }
21         }
22
23
24         if (table.rows[row].style.display != "none")
25         {
26             document.getElementById(str+"_"+row).value=valu;
27             CalculateTotalSalary("",row);
28         }
时间: 2024-10-29 03:08:55

Data层相关问题 & JS循环取值的相关文章

html与js的取值,赋值

----------------------------------------------------------------------------------------------------------- html中赋值:<button ng-click="showColor('green')">变色</button> js中取值: $scope.showColor=function($routeParams){ alert($routeParams)

jquery data方法取值与js attr取值的区别

<a data-v="3"></a> jquery data方法的运行机制: 第一次查找dom,使用attributes获取到dom节点值,并将其值存到缓存里,第二次操作的时候,还是先找到dom,但是这次取值是直接从缓存读了,少了一步对dom的操作 attr()方法每次都要操作dom,性能上差点儿 $('a').data('v')取到的值是页面初次加载的缓存值,以后如何更改,在页面上都不会改变,但缓存值会变,可以传给i/o请求使用 document.getEle

js页面取值的三种方式

<input id=""<radio <checkbox<div<img对于这些标签内参数取值,一般分为三种类型:一.有关id取值用 #:取id处的value值:id=$('#id名字').val();取id本身的值:id_value=$('#id名字').attr('id', );对于id中含有变量index的,比如id=mm${st.index}(中括号里面为变量):先定义可变量index,然后用$('#id名字'+index).val()取值:二.有

单选复选框的js代码取值

单选框 复选框选中后的js代码处理 <script type="text/javascript"> function check(){ document.getElementById("checked").style.display="block"; var radio=document.getElementsByName("sex");//此处不能getElementById(),否则只会取第一个的值 for(v

js对象取值的两种方式

var obj = {abc:"ss",nn:90}; var v1 = obj.abc;//使用点的方式 var v2 = obj["abc"];//使用中括号的方式 在实际项目中一般使用点,会方便许多,但是如果key是变量的话就不能使用点了,js会理解变量为对象的key值,造成混淆 1 var v3 = obj[key];//key是一个变量

js 循环获取值时-缓存数组(或集合)的长度

$scope.footActiveIndex = 1;    $scope.noData = false;    var iPageSize =10,        needRequest = true,//是否需要刷地址选择//是否要刷新loaddata        newCityPickerQu = [],//根据定位确定当前地址选择范围        num1,num2;//附近 $scope.info = {        area : '',        city : '',  

当对象的列表送属性嵌套在大列表里面 要多重循环取值

原文地址:https://www.cnblogs.com/classmethond/p/10074393.html

Kotlin学习笔记-----取值范围和循环

取值范围 kotlin中可以给一个变量赋值一个范围, 而不仅仅是单个的值 例如: // 表示从1到100的值 // 此时起始值要小于结束值 var i = 1..100 通过downTo可以表示从100到1 // downTo的起始值要大于结束值 var i = 100 downTo 1 也可以使用reversed()来将正序的反转 // 通过reversed反转 var i = 1..100 i.reversed() 可以使用step控制步长 // 此时就是1到100的值, 每次增长2 var

探讨:如何更快的赋值取值

背景 显示数据时,常规赋值与取值是这样的. // set $("#name").val(data.name); $("#realname").val(data.realname); $("#address").val(data.address); $("#sex").val(data.name); $("#love").attr(!!data.love); // get var data = { name: