留言簿

我要留言
留言搜索

2018-02-11 19:36  周良

杨老师 您好:
 <pages pageBaseType="BmProject.Core.ViewPages.AdminViewPage">
VIEWS下面的WEBCONFIG 里 我把pageBaseType改了

AdminViewPage 内容:
 public abstract class AdminViewPage<TModel> : WebViewPage<TModel>
    {
        public AdminWorkContext WorkContext;

        public sealed override void InitHelpers()
        {
            base.InitHelpers();
            Html.EnableClientValidation(true);//启用客户端验证
            Html.EnableUnobtrusiveJavaScript(true);//启用非侵入式脚本
            WorkContext = ((BaseAdminController)(this.ViewContext.Controller)).WorkContext;
        }

        public sealed override void Write(object value)
        {
            Output.Write(value);
        }
    }

    /// <summary>
    /// PC后台视图页面基类型
    /// </summary>
    public abstract class AdminViewPage : AdminViewPage<dynamic>
    {
    }



然后使用分页时 就出问题了 网页源码:
、<div class="text-center">
    Webdiyer.WebControls.Mvc.AjaxPager
</div>
请问下怎么解决呢
回复:您好,没有完全看懂您的意思,留言簿留言长度有限,也无法帖出太多代码,不知您是否有简单的重现这个问题的示例项目发给我看一下?我的gmail邮箱名是webdiyer。谢谢!

2018-02-09 16:31  石荣

杨老师,您好
我想问下,这个控件怎么能实现国际化呢?

比如,
CustomInfoHTML="每页显示 %PageSize% 条 当前 %CurrentPageIndex%/%PageCount% 页 共 %RecordCount% 条记录&nbsp;&nbsp;"

我需要把这些关键字,如:"每页显示",“条”,“当前”,“共”....转换成英文。

我的解决方法:
1. 在原有标签嵌套:<%%> 不支持。
2. on_pageload() 方法中,重新定义CustomInfoHTML,但是,点击页面查询button的时候,数据源没有更新。

我的page(aspx),包含查询条件:比如:开始日期,结束日期,图标显示方式。

后台(.cs)
Control_ucAspNetPager : System.Web.UI.UserControl,不知道怎么获取这些条件(开始日期,结束日期,图标显示方式。)从而执行存储过程

3. OnPageChanged(),重新定义CustomInfoHTML。这样点击下一页可以实现中英转换。

是否有一些更为简单的方法,可以直接替换?


我不知道我的思路是否正确,您能在百忙工作之余给我意见建议吗?我将不胜感谢。
回复:您好,您的意思是要实现多语言还是只需要英文版呢?如果是多语言,您可以在通过当前culture来判断是什么语言然后设置CustomInfoHTML的内容为对应的语言;查询和AspNetPager没有关系,您需要在button的click事件中获取提交的查询条件然后执行查询,如果您用默认的postback方式分页,那么分页过程中查询参数仍然会通过viewstate进行传递,如果是url分页,那就不能用服务器端button,您需要通过get方式来提交表单,在后台通过Request.QueryString["参数名"]的方式来获取查询条件。谢谢!

2018-02-06 16:15  铁英英

杨老师好。我仿照网站上的演示做“选择页索引”,一直不能实现此功能,别是功能可以正常显示。代码如下:
@using EmAttDB.Data.Entity;
@using Webdiyer.WebControls.Mvc;
@model PagedList<EmInfo>

<div id="EmInfo">
    @Html.Partial("_EmInfoTable", Model)
    <div style="width:100%;overflow:auto">
        @Ajax.Pager(Model).Options(o=>o.SetId("mypager").SetPageIndexParameterName("id").SetPageIndexBoxId("pib1").SetPagerItemTemplate("{0}&nbsp")).AjaxOptions(a=>a.SetUpdateTargetId("EmInfo").EnablePartialLoading())

        <div style="float:right">跳转到第<select id="pib1"/>页</div>
    </div>
</div>
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}
回复:您好,您用哪个版本的MvcPager?出现什么问题?代码看起来没有问题,请确认您是否注册了MvcPager的客户端jquery脚本插件。谢谢!

2018-02-02 13:58  杨立旭

杨老师好,
昨天给您留过言,关于ajax分页被降级为url分页的问题。
经检查jquery插件已经注册,页面也没有任何的js错误,分页始终是url分页
回复:您好,没有代码无法知道是什么原因,请对照示例检查一下看是否是哪里设置有问题,一般来说,只要正确引用了jquery脚本库并注册了MvcPager脚本插件,而且页面没有脚本错误的话,是不会出现这种问题的。谢谢!

2018-02-01 10:16  杨立旭

杨老师您好!
我在使用ajax分页的时候,控件属性data-ajax=true,但是点击页码或者上一页下一页的时候还是使用了url打开了新页面,而不是刷新局部视图页,请问是什么原因呢。
回复:您好,出现这个问题最可能的原因是没有注册脚本插件或者页面上有脚本错误导致Ajax提交失败,请用F12开发者工具调试检查。谢谢!

2018-01-31 18:25  麻辣小龙虾

杨老师你好,gridview使用aspnetpager时候,gridview本身的排序功能是否无法使用?
回复:您好,可以的,排序和分页不冲突。谢谢!

2018-01-29 21:31  阿斌

杨老师你好,今天碰到一个非常奇怪的问题,目前使用的是您的最新版本的MVCPAGER ,具体情况如下:第一次进入页面的时候,如果页面数据多于1页,再点击搜索后,然后再点击下一页是正常的。如果首次加载,数据少于两页,也就是说只有一页,或者没有数据,那我点击搜索之后,就算出来的数据是多于2页的,再点下一页,提交到后台的请求 就自动变为get请求,而不是post请求,导致页面404.
备注:我使用的是 ajax表单的分页
具体代码如下:
        public ActionResult Order(int id = 1)
        {
            ViewBag.IsAdmin = CurrentUser.U_IsAdmin;
            var qry = _orderService.TableNoTracking;
            if (!CurrentUser.U_IsAdmin)
            {
                qry = qry.Where(x => x.O_UserID == CurrentUser.U_UserID);
            }

            //qry = qry.Where(x => x.O_State == 0);

            DateTime s = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
            DateTime e = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));

            qry = qry.Where(x => x.O_SubTime >= s);
            qry = qry.Where(x => x.O_SubTime <= e);
            var model = qry.OrderByDescending(a => a.O_SubTime).ToPagedList(id, PageManage.PageSize);
            if (Request.IsAjaxRequest())
                return PartialView("_AjaxOrderPost", model);
            return View(model);

        }

        [HttpPost]
        public ActionResult Order(string orderid, int? state,string starttime,string endtime, int id = 1)
        {
            return AjaxSearchPost(orderid, state, starttime, endtime, id);
        }

        [HttpPost]
        public ActionResult AjaxSearchPost(string orderid, int? state, string starttime, string endtime, int id = 1)
        {
            ViewBag.IsAdmin = CurrentUser.U_IsAdmin;
            var qry = _orderService.TableNoTracking;
            if (!CurrentUser.U_IsAdmin)
            {
                qry = qry.Where(x => x.O_UserID == CurrentUser.U_UserID);
            }
            if (!string.IsNullOrEmpty(orderid))
            {
                Int64 order_id = Convert.ToInt64(orderid.Trim());
                qry = qry.Where(x => x.O_OrderID == order_id);
            }
            if (state !=
回复:您好,出现这个问题的原因是只有一页或没有数据时,MvcPager默认不显示,也就导致分页jQuery插件不能绑定事件,只需要将PagerOptions.AutoHide设为false即可。谢谢!

2018-01-25 20:10  Xiaojun

杨老师,MvcPager既然有NET Core版本,有没有想过为这个版本添加TagHelper形式的部署方式?
回复:您好,本来就是tag helper,两种呈现方式都支持,请注意看示例。谢谢!

2018-01-23 21:22  学生

杨老师您好,请问设置了InsertionMode.InsertAfter 后没有效果是为什么呢?想实现加载更多,即在原有数据基础上再加载新数据。
 @Ajax.Pager(Model, new PagerOptions
           {
               Id = "divPage",
               ShowNumericPagerItems = false,
               //ShowPrevNext = false,
               ShowFirstLast = false,
               NextPageText = "查看更多>>",
               PrevPageText = "上一页",
               //NextPageText = "下一页",
               //ShowDisabledPagerItems = false,
               //AlwaysShowFirstLastPageNumber = false,
               PageIndexParameterName = "pageIndex",
               NumericPagerItemCount = 3,
               CssClass = "moregoods",
               ShowMorePagerItems = true
           }, new MvcAjaxOptions { UpdateTargetId = "ProductListDiv", LoadingElementId = "nonedata", LoadingElementDuration = 1000, InsertionMode = InsertionMode.InsertAfter })
回复:您好,这个属性默认值是Replace而且不能修改,请看帮助文档中的说明:http://www.webdiyer.com/mvcpager/docs/mvcajaxoptions/。谢谢!

2018-01-23 17:06  椰楠

<div id="nonedata" class="nonedata" style="display: none;">
                正在获取数据,请稍候...
            </div>
            <div style="clear: both;">
            </div>
            <div class="foot">
                @Ajax.Pager(Model, new PagerOptions
           {
               Id = "divPage",
               ShowNumericPagerItems = false,
               ShowPrevNext = false,
               ShowFirstLast = false,
               NextPageText = "查看更多>>",
               ShowDisabledPagerItems = false,
               AlwaysShowFirstLastPageNumber = false,
               PageIndexParameterName = "pageIndex",
               NumericPagerItemCount = 1,
               CssClass = "moregoods",
           }, new MvcAjaxOptions { UpdateTargetId = "ProductListDiv", LoadingElementId = "nonedata", LoadingElementDuration = 1000, InsertionMode = InsertionMode.InsertAfter })
            </div>
生成不报错,但从前端代码看,生成以下代码,请问是为什么
data-ajax-update="#ProductListDiv" data-invalidpageerrmsg="页索引无效" data-outrangeerrmsg="页索引超出范围" data-pagecount="1" data-pageparameter="pageIndex" data-pagerid="Webdiyer.MvcPager" data-urlformat="/PagerDemo?pageIndex=__pageIndex__" id="divPage"></div>
<!--MvcPager v3.0.1 for ASP.NET MVC 4.0+ © 2009-2015 Webdiyer (http://www.webdiyer.com)-->
回复:您好,生成的代码就是对的,您有什么问题?谢谢!
;