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         }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。