实习期收获(一)

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;
}

原文地址:https://www.cnblogs.com/sunzgod/p/4121946.html