实习期收获(一)
first:同一个页面的前后台传值,(List<>)
eg:
.cs
{
protected IList<KDSoft.KDTest.Domain.Edu.Syllabus> syList; //定义一个syList方法,没有实现体
syList = SyllabusService.GetListByClassAndTerm(1, 1);//数据绑定到syList
}
.aspx
{
<%foreach(KDSoft.KDTest.Domain.Edu.Syllabus syli in syList)%>//因为在同一个,页面所以直接获得了syList
//我也在考虑如果把.cs里面的portect改成public那么是不是所有的aspx界面都能够获得这个syList
}
second:自定义sql语句到ibatis.net中
1.web--.aspx--.cs SyllabusService.GetListByClassAndTerm(1, 1);//调用Service中的方法
2.IService--Isyllabus--.cs IList<Syllabus> GetListByClassAndTerm(int classId, int termId);//定义sql语句实现的接口
2.Service--Syllabus--.cs
eg1:public IList<Syllabus> GetListByClassAndTerm(int classId, int termId)
{
Hashtable ht=new Hashtable();
ht.Add("ClassId",classId);
ht.Add("Term",termId);
return Dao.QueryForList("SelectListByClassIdAndTerm",ht);
}
eg2:
public IList<Hashtable> GetProjectListByProjectEditCount(CurrentUser.ID);
{
return Dao.QueryForList<Hashtable>("GetProjectListByProjectEditCount",id);
}
//实现接口 说明一下Hashtable 因为引用的Ibatis.net的程序集中的QueryForList方法中 的参数只有两个(string,object)
//这里面的string是说明sql语句的作用,object是需要参数的类型
//如果需要的参数只有一个 可以直接定义成 int,string,bool......
//如果需要的参数是多个的话,那么就需要定义一个hashtable来接受这些参数
//个人理解:1。如果仅仅是需要一个参数就相当于ADO.NET中的sqlparameter
//2.如果需要的是多个参数就相当于ADO.NET中的sqlparameter[]
3.persistence--.xml
eg1:
<statements>
<select id="SelectListByClassIdAndTerm" parameterClass="hashtable" resultMap="SelectResult" >
select * from Edu_syllabus
where
[ClassId]=#ClassId#
and
[Term]=#Term#
</select>
</statements>
eg2:
<select id="GetProjectListByProjectEditCount" parameterClass="int" resultClass="hashtable">
SELECT TOP 5 ProjectID,ProjectName from Work_WorkLog WHERE UserID= ($id$)
GROUP BY ProjectID ,ProjectName ORDER BY COUNT(ProjectID) DESC
</select>
//这里面主要写的是sql语句,最核心的地方吧
//注意点【1】整个xml中的数据都要求与Service--Syllabus--.cs 中的实现接口的方法对应
//【2】select 中的id应该对应上文queryforlist(string,object)中的string
//【3】parameterClass应该对应上面的object的具体类型
//【4】sql语句中的参数应该与hashtable中定义的参数一致,区分大小写。
前台获取值:
#data# 类型安全
%data% 不安全 但是适用度更广
IList<s> tt =>接收 ‘<%EVAL("column")%>’==>selectResult
hashtable tt =>接收 '<%#Eval("[\"UserName\"]")%>' ==》selectclass
dictionary<string,string> tt=>接收 ‘<%#Eval("key")%>’
public Dictionary<string, string> GetRecentlyUsedProjectList(int userId)
{
var dic = new Dictionary<string, string>();
var listht = Dao.QueryForList<Hashtable>("GetRecentlyUsedProjectList", userId);
foreach (var ht in listht)
{
if (!dic.ContainsKey(ht["ProjectID"].ToString()))
dic.Add(ht["ProjectID"].ToString(), ht["ProjectName"].ToString());
}
return dic;
}