我还不能算是熟手,充其量半熟而已。在做项目的过程中,经常遇到各种小问题,有时候将问题解决之后,下次遇到时又忘记了解决的方法。哎,年纪大了,记性不好了。俗话说,好记性不如烂笔头,何况我这等坏记性呢?所以,还是把每次遇到的问题和解决的方法都记录下来吧,以便日后查找,也拿出来和大家分享。:)
问题一(04.07):在js中如何判断字符串是否以“xxx”开头?C#中有StartWith()方法,js却没有。
解决:在网上找到了startWith和endWith的js方法。(原文链接)
2 function test(){
3 var a = " abcdef " .startWith( " abc " );
4 alert( " a : " + a);
5 var b = " abcdef " .endWith( " def " );
6 alert( " b : " + b);
7 }
8 String.prototype.endWith = function (str){
9 if (str == null || str == "" || this .length == 0 || str.length > this .length)
10 return false ;
11 if ( this .substring( this .length - str.length) == str)
12 return true ;
13 else
14 return false ;
15 return true ;
16 }
17
18 String.prototype.startWith = function (str){
19 if (str == null || str == "" || this .length == 0 || str.length > this .length)
20 return false ;
21 if ( this .substr( 0 ,str.length) == str)
22 return true ;
23 else
24 return false ;
25 return true ;
26 }
27 < / SCRIPT>
问题二(04.16) :添加、编辑数据,linq语句提交时,出现“找不到行或行已更改”的错误。
解决:同样是在网上找到了解决方法,说是因为发生了“Linq中一个常见的问题:更新冲突”。(原文链接)具体解决如下:
1.如果不是重要的数据,不需要理会并发重突,有一种简单的方法:打开dbml (linq)文件把实体类中的 属性 "Update check(更新检查)" 改为 Never(从不),当然,主键除外。
2.比较简单的方法,不使用Linq提供的SubmitChanges()方式提交更改,而直接执行SQL语句,例如:
db.ExecuteCommand("Update [dbo].[LinqTest] SET Age=25 Where ID = @p0", 1);
3.采用Linq提供的解决更新冲突的方法,在异常中捕获冲突,然后手动解决冲突:
try
{
dc.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
}
catch (System.Data.Linq.ChangeConflictException ex)
{
DC.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues); //保持当前的值
DC.ChangeConflicts.ResolveAll( RefreshMode.OverwriteCurrentValues);//保持原来的更新,放弃了当前的值.
DC.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);//保存原来的值 有冲突的话保存当前版本
db.SubmitChanges();// 注意:解决完冲突后还得 SubmitChanges() 一次,不然一样是没有更新到数据库的
}
问题三(04.28):客户要求做个网上预约服务的功能,提交表单的时候,选择“网上预约”方式还是“邮箱预约”方式,“网上预约”就提交表单到后台,“邮箱预约”就发送表单内容到客户的邮箱。以前没做过用代码来发送邮件的程序,虽然当初学的时候学习了,但这么久下来,早就忘记了。于是上园子里搜了搜,立马就搜到一个蛮好的文章,呵呵,先在这里谢谢博主(小小书童)了。(原文链接)