第一次写博客,里面是自己工作中碰到的问题及总结的知识点,便于自己以后回顾,技术大牛们请直接忽略这篇文章,也希望能帮助到想我这样的小白!
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 //获取表格行数 6 var tableCount = table.rows.length; 7 8 var CountNum = 0; 9 10 var NowSal = document.getElementById("JBGZ").value.Trim(); 11 var ModifedSal = document.getElementById("JiangJ").value.Trim(); 12 13 // //出错字段 14 // var fieldText = ""; 15 // //出错提示信息 16 // var msgText = ""; 17 // //是否有错标识 18 // var isErrorFlag = false; 19 20 if (NowSal == "" && ModifedSal == "") { 21 alert("请在对应的位置,输入原工资和修改后的工资!"); 22 // isErrorFlag = true; 23 // fieldText += "原工资和修改后的工资|"; 24 // msgText += "请输入原工资和修改后的工资|"; 25 } 26 else if (NowSal == "") { 27 alert("请输入原工资!"); 28 } 29 else if (ModifedSal == "") { 30 alert("请输入修改后的工资!"); 31 } 32 else // if (ModifedSal != "" && NowSal!="") 33 { 34 for (var row = 1; row < tableCount; row++) 35 { 36 var rowIndex = table.rows[row - 1]; 37 var textinput = rowIndex.getElementsByTagName("input"); 38 39 for (var i = 1; i < textinput.length; i++) 40 { 41 if (textinput[i].value == NowSal)// && (textinput.id.indexOf('TotalOne_') <= -1) && (textinput.id.indexOf('TotalTwo_') <= -1) && (textinput.id.indexOf('Total_') <= -1)) // var textinput = table.getElementsByTagName("input"); 42 { 43 textinput[i].value = ModifedSal; 44 CountNum++; 45 } 46 } 47 CalculateTotalSalary("", row); 48 } 49 if (CountNum == 0) 50 { 51 alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。"); 52 } 53 } 54 }
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) ) //多注意parseFloat,parseDouble等等的用法
// && (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 }