摆脱控件之新手1
摆脱控件只要是借助于jquery的强大和web 服务(.service)和一般处理程序(.ashx),而达到更好的用户体验效果。当然,今天作为新手,暂时不考虑web服务和一般处理程序,而是先用.cs处理数据库数据。这个也是我第一次自己弄出来的,程序一开始用的是Repeater控件,而这里用的是IList,或者拼接html两种方法。因为我也是第一次做这种,所以只是简单的做了个显示数据,而没有修改添加那些,以后有机会一起补上。难免会有问题,大家多多指教。实例后面附上
首先用IList循环输出数据:
获得分页数据(DataSet类型)
DataSet ds = bll.GetPageList(pagesize, page, "", "Id desc");
转换成IList类型(这个步骤可以省略的,有个直接获取数据成IList类型的,因为我是直接从项目中提取的,就要转换下)
list = DataSetToIList(ds);
DataSetToIList方法
/// <summary>
/// 把DataSet转换成IList<>
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public static IList<MyWeb.Model.Contents> DataSetToIList(DataSet ds)
{
IList<MyWeb.Model.Contents> list = new List<MyWeb.Model.Contents>();
for (int i=0;i<ds.Tables[0].Rows.Count;i++)
{
MyWeb.Model.Contents model = (MyWeb.Model.Contents)Activator.CreateInstance(typeof(MyWeb.Model.Contents));
PropertyInfo[] properities = model.GetType().GetProperties();
//上面的这两句主要是获得model.name,model.name等的属性的。其中第一句也可以直接new MyWeb.Model.Contents model
foreach (PropertyInfo item in properities)
{
for (int j = 0; j < ds.Tables[0].Columns.Count;j++ )
{
if(item.Name.Equals(ds.Tables[0].Columns[j].ColumnName))
{
if (ds.Tables[0].Rows[i][j]!=DBNull.Value)
{
item.SetValue(model, ds.Tables[0].Rows[i][j], null);
}
else
{
item.SetValue(model, null, null);
}
}
}
}
list.Add(model);
}
return list;
}
后台的.cs基本是这样了。
注意的一点是list,pcount,page,pagesize都要声明称全局的,前台要调用到
前台的主要代码是这个了
<% foreach (MyWeb.Model.Contents item in list)
{
%>
<tr class="tr_bg">
<td align="center"><span class="checkall"><input type="checkbox" id="rptList_ctl02_cb_id"></span></td>
<td align="center"><span id="rptList_ctl02_lb_id"><%= item.Id %></span></td>
<td><a href="Edit.aspx?id=<%= item.Id %>"><%= item.Title %></a></td>
<td align="center"></td>
<td align="center"><%= item.SortId %></td>
<td align="center"><span><a href="edit.aspx?id=<%= item.Id %>">修改</a></span></td>
</tr>
<% } %>
通过用foreach循环得到数据。
注意的是分页js
分页的div,直接复制,什么都不变
<div id="Pagination" class="right flickr"></div>
分页的js代码
<script type="text/javascript">
$(function() {
//分页参数设置
$("#Pagination").pagination(<%=pcount %>, {
callback: pageselectCallback,
prev_text: "« 上一页",
next_text: "下一页 »",
items_per_page:<%=pagesize %>,
num_display_entries:3,
current_page:<%=page %>,
num_edge_entries:2,
link_to:"?page=__id__"
});
});
function pageselectCallback(page_id, jq) {
//alert(page_id); 回调函数,进一步使用请参阅说明文档
}
</script>
分页还要引用js。
这里要说的是,贴出的并不是完整代码,只是一种思路,要完整代码可以下载源码查看
源码下载(数据库可以自动附加,不用手动附加的vs2008,sql2005)

浙公网安备 33010602011771号