c# mvc webGrid 无刷新分页

参考地址:http://www.dotnetcurry.com/ShowArticle.aspx?ID=618

一、webGrid.css
.webGrid
{
    margin: 4px;
    border-collapse: collapse; /*width: 300px;*/
}
.header
{
    background-color: #E8E8E8;
    font-weight: bold;
    color: #FFF;
}
.head
{
    background-color: #E8E8E8;
    font-weight: bold;
    color:Black;
}

.webGrid th, .webGrid td
{
    width: 190px;
    #width:170px;
    border: 1px solid #C0C0C0;
    padding: 5px;
}
.alt
{
    background-color: #E8E8E8;
    color: #000;
}
.person
{
    width: 200px;
    font-weight: bold;
}

二、Pager.js
var sPath = "";
$(function () {
    if ($("#EfficientPaging") != undefined) {
        sPath = $("#EfficientPaging").val();
        $.getJSON(sPath, null, function (d) {
            // add the dynamic WebGrid to the body
            $("#xwGrid").append(d.Data);

            // create the footer
            var footer = createFooter(d.Count);

            $("#DataTable tfoot a").live("click", function (e) {
                e.preventDefault();
                var data = {
                    page: $(this).text()
                };

                $.getJSON(sPath, data, function (html) {
                    // add the data to the table   
                    $("#DataTable").remove();
                    $("body").append(html.Data);

                    // re-add the footer
                    $('#DataTable thead').after(footer);
                });
            });
        });
    }
});

function createFooter(d) {
    var rowsPerPage = 5;
    var footer = "<tfoot><tr><td style='border:none'>";
    for (var i = 1; i < (d + 1); i++) {
        footer = footer + "<a href=#>" + i + "</a>&nbsp;";
    }
    footer = footer + "</td></tr></tfoot>";
    $("#DataTable thead").after(footer);
    return footer;
}  
三、view
 <link href="../../Content/css/webGrid.css" rel="stylesheet" type="text/css" />
 <script src="../../Content/jquery/mvcPager/Pager.js" type="text/javascript"></script>

<input id="EfficientPaging" name="EfficientPaging" type="hidden" value="/Seller/EfficientPaging" />
    <div id="xwGrid">
    </div>
四、Controller
public class SellerController : Controller
{
 private List<Seller> sellPopular;
 [HttpGet]
        public JsonResult EfficientPaging(int? page)
        {
            int icount =10;//每页显示数量

            int skip = page.HasValue ? page.Value - 1 : 0;  //如果page为0默认显示第一页
            sellPopular = SellerAccess.GetSellerList(skip, icount);    //获取当前页显示的数据
            var grid = new WebGrid(sellPopular);
            var htmlString = grid.GetHtml(
               tableStyle: "webGrid",
               headerStyle: "head",
               alternatingRowStyle: "alt",
               columns: grid.Columns(
               grid.Column("SellerID", "商家编号", canSort: false),
               grid.Column("SellerNick", "商家昵称",canSort:false),
                  grid.Column(format: (item) => {
                      return new HtmlString("<input type='button'οnclick='RedirectVersion(" + item["SellerID"] + ")' value='管理版本'/>&nbsp;<input type='button' οnclick='UpSeller(" + item["SellerID"] + ")' value='修改'/>&nbsp;<input type='button' value='删除'οnclick='DeleteSeller(" + item["SellerID"] + ")'");
                  }, columnName: "操作",canSort:false)
                  ),
                  htmlAttributes: new { id = "DataTable" }
              );
           
            int sellerCount = SellerAccess.GetSellerCount();
            return Json(new
            {
               
                Data = htmlString.ToHtmlString(),
                Count = Math.Ceiling((double)sellerCount/(double)icount)    //计算总页数s
            }, JsonRequestBehavior.AllowGet);
        }
}
五、DataAccess
 /// <summary>
        /// 查询所有商家总数

        /// </summary>
        /// <returns></returns>
        public static int GetSellerCount()
        {
            int sellerCount = 0;
            using (ShopexMobileEntities db = new ShopexMobileEntities())
            {
                try
                {
                   sellerCount=db.Seller.ToList().Count();
                }
                catch (Exception)
                {
                    db.Dispose();
                    return sellerCount;
                }
            }
            return sellerCount;
        }
        /// <summary>
        /// 获取当前页显示的数据
        /// </summary>
        /// <param name="pageIndex">当前页</param>
        /// <param name="count">每页显示的数量</param>
        /// <returns></returns>
        public static List<Seller> GetSellerList(int pageIndex, int count)
        {
            List<Seller> sellerList = new List<Seller>();
            using (ShopexMobileEntities db = new ShopexMobileEntities())
            {
                try
                {
                     sellerList=db.Seller.OrderBy(o => o.SellerID).Skip(pageIndex * count).Take(count).ToList();
                  
                }
                catch (Exception)
                {
                    db.Dispose();
                    return null;
                }
            }
            return sellerList;
        }

本控件是基于Asp.Net平台的Web表格控件,用于Web网站的开发。 ★支持多种浏览器(IE6以上、FireFox2.0以上、谷歌浏览器等)。 ★使用本控件开发的网站,网页上表格行的插入、追加、删除、修改、上下移动、拷贝、粘贴等操作,能够立即在浏览器客户端完成,操作按钮在上图表格的左下部。 ★提交后的数据为一个DataTable。用户可使用GetCommitData方法取得使用本控件,很好地节约了网络资源,提升了网站的多用户对应能力。极大地提高了网页的反应速度,提升了网站浏览者的浏览体验。 ★本控件提供了丰富的自定义样式,供开发人员设定使用。表格(GridStyle)、奇偶行(ItemStyle、AlternatingItemStyle)、列(列的ItemStyle)、列内的控件(列的ControlStyle)、合计行(PageTotalStyle、AllTotalStyle)、控制行(包含各种行操作按钮和页操作按钮ToolBarStyle)都可以自由的进行样式设定。 ★提供多种类型的列供开发人员使用:(LabelColumn(图A-金额),TextBoxColumn(图A-数量、单价),DropDownListColumn(图A-类别、商品),RadioButtonListColumn(图A-发货区分),CheckBoxColumn(图A-包装有无),RowIndexColumn(图A-ID),HiddenColumn(隐藏列),TemplateColumn(图A-备注,模板,用于扩展)。 ★支持多行表头显示(图A),支持列合并(图A-发货区分)、行合并(图A-备注)。使用本控件进行开发,开发人员能够自由设定各种显示效果。 ★支持开发人员自定义表头。 ★支持一个数据行,多行表格行表示。避免了列项目多的情况下,网页显示过宽的问题。(图A) ★支持金额、数字的自定义格式化功能。(图A-数量、单价,金额,金额美元) ★支持货币符号的自定义(如:$,¥)。(图A-金额,金额美元) ★支持列的公式自动计算功能。(图A-金额=数量×单价,金额美元=金额/汇率)列设定公式后,在网页上根据因子的变化自动计算结果。结合金额、数字的自定义格式化和货币符号的自定义功能,可开发专业性的财会、金融网站。 ★支持列的Ajax联动功能。特别定义了OnCallBack事件,开发人员能非常简单地实现Ajax联动,而页面不需要刷新。(图A-类别变化的时候,Ajax联动,更新了图A-商品列表) ★支持模板列(TemplateColumn),(图A-备注,模板)。并支持模板列的Ajax联动功能。模板列提供了扩展功能,使页面可以使用本控件支持的列类型之外的控件类型。 ★支持自定义分页(图A定义每页大小为3行)。可由开发人员自行决定网页提交的模式,是小批量多批次,还是大批量少批次。本控件的灵活性提高了网站的灵活适应性。 ★本控件自动提供自带的分页控件,提供页的导航功能(图A右下部)。开发人员也可以禁止本控件提供的分页控件,使用自己的分页控件或按钮调用本控件的分页功能。 ★表格行的上下移动功能,在分页的情况下,当需要跨页的情况下,自动提交数据,执行RowMoving事件,开发者可以在此事件中执行真正的数据行的上下移动,再绑定显示数据。 ★表格行的拷贝、粘贴功能,在分页的情况下,支持跨页执行,支持带Ajax联动列的直接拷贝。 ★支持操作的撤销、恢复功能,提升用户操作体验。 ★支持页合计和全部页合计。支持五种合计类型(Sum,Max,Min,Count,Average)。通过简单的开关设置,就可以完成合计功能。(图A-数量、金额、金额美元,设定了Sum合计;图A-单价,设定了Average合计)。 ★支持多种数据源。 ★所见即所得的设计时支持,方便软件开发者进行页面设计。 ★提供丰富、实用的JS接口,供开发人员使用。 ★本控件的开发中,力求功能的简洁、实用、耐用。提升开发人员的开发体验。 QQ:1030032915 MSN:IntelliGrid@hotmail.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值