摆脱控件之新手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)

posted @ 2013-04-02 16:27  ~KG~  阅读(240)  评论(0编辑  收藏  举报