留言簿

我要留言
留言搜索

2018-01-01 12:16  ynat

.net core 带区域的分页后显示不对了 
如 第一次是 http://localhost:41760/LogManage/Log/List
分页面变成了 http://localhost:41760/Log/List/2?area=LogManage 
请问这个怎么处理
回复:您好,area不应该传递到url中,您是怎么调用的?谢谢!

2017-12-30 01:41  wheeky

发现一个BUG:
<ul class="pagination" data-ajax="true" data-ajax-dataformid="#logQueryForm" data-ajax-update="#logTable" data-gotobutton="#goToBtn" data-invalidpageerrmsg="页索引无效" data-outrangeerrmsg="页索引超出范围" data-pagecount="0" data-pageindexbox="#pageIndexBox" data-pageparameter="page" data-pagerid="Webdiyer.MvcPager" data-urlformat="/Logs/List?page=__page__"></ul>

但实际我的TotalPageCount是有值的:
我直接 总页数:@Html.DisplayFor(m=>m.TotalPageCount)显示有上百页数据,但就是无法使用自定义的跳转代码,提示页码超出范围.
我的CSHTML代码如下:
<div class="text-center">
    <div style="display:inline-block;" >
        @Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "page", PageIndexBoxId = "pageIndexBox", GoToButtonId = "goToBtn", ContainerTagName = "ul", CssClass = "pagination", AutoHide = true, CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).AjaxOptions(a => { a.SetUpdateTargetId("logTable"); a.SetDataFormId("logQueryForm"); })
    </div>
    <div class="input-group" style="width:120px;margin:20px 0;">
        <input type="text" id="pageIndexBox" value="@Model.CurrentPageIndex" class="form-control">
        <span class="input-group-btn"><button class="btn btn-primary btn-sm" id="goToBtn">跳转</button></span>
    </div>
</div>
回复:您好,这个问题什么情况下出现的?是在Ajax查询分页之后还是加载时就这样?谢谢!

2017-12-25 17:04  廉毅

您好!好像没有存储过程ajax分页的例子
回复:您好,不知道您说的是哪个控件?存储过程和Ajax分页没有任何直接关系,无论AspNetPager还是MvcPager都有存储过程分页的例子。谢谢!

2017-12-23 16:11  xxxx

老师您好,请问怎么在修改数据后返回改数据所在页数,还有如果是通过查询后在进入页面修改的,还能返回的查询结果页,我用的AspNetPager的PostBack分页
回复:您好,PostBack方式不支持跳转到指定页,这种需求无法实现,建议您用url分页模式。谢谢!

2017-12-23 16:07  xxxx

老师您好,请问怎么在修改数据后返回改数据所在页数,还有如果是通过查询后在进入页面修改的,还能返回的查询结果页
回复:您好,不知道您用哪个分页控件?用什么分页模式?如果是AspNetPager并且用Url分页,或者MvcPager使用标准路由分页,都可以在编辑后跳转到指定url即可,另外MvcPager的Ajax分页模式下也可以通过url中的hash(#)定位到指定页。谢谢!

2017-12-22 23:01  wheeky

mvcpager 数据内容一定要用局部视图吗?我试了没有用局部视图,翻页的HTML没有生成。

CODE如下:
<div class="row">
    <table class="table table-striped table-hover table-bordered">
        <thead>
            <tr>
                <th>日志时间</th>
                <th>日志产生源</th>
                <th>线程ID</th>
                <th>日志级别</th>
                <th>日志内容</th>
                <th>详情追踪</th>
                <th>用户ID</th>
                <th>机器名</th>
                <th>其它1</th>
                <th>其它2</th>
                <th>其它3</th>
            </tr>
        </thead>
        <tbody>
            @if (Model != null && Model.Any())
            {
                foreach (var item in Model)
                {
                    <tr>
                        <td>@item.LogDT.ToString("yyyy/MM/dd HH:mm:ss")</td>
                        <td>@item.Properties.Source</td>
                        <td>@item.ThreadID</td>
                        <td>@item.Level</td>
                        <td>@item.Msg</td>
                        <td>@item.Properties.DetailTrace</td>
                        <td>@item.Properties.UserID</td>
                        <td>@item.MachineName</td>
                        <td>@item.Properties.Other1</td>
                        <td>@item.Properties.Other2</td>
                        <td>@item.Properties.Other3</td>
                    </tr>
                }
            }
            else
            {
                <tr>
                    <td colspan="11" class="alert-danger text-center">没有相关的日志信息记录!</td>
                </tr>
            }
        </tbody>
    </table>
    @if (Model != null)
    {
        Html.Pager(Model).Options(o => o.SetPageIndexParameterName("pageno").SetHorizontalAlign("right").SetPagerItemTemplate("&nbsp;{0}"));
    }
</div>
回复:您好,不是Ajax分页不需要用局部视图,即使用Aajx分页模式也可以不用局部视图,只需要将MvcAjaxOptions.EnablePartialLoading设为true即可。如果没有生成分页的html代码,是因为要分页的总页数只有一页,将PagerOptions.AutoHide设为false即可显示。谢谢!

2017-12-15 13:55  lvjin

另一个bug,暂时没解决。
前提:带异步搜索框的ajax分页,页面刷新的搜索不存在此问题。
点击搜索后,页面并不刷新,载入mvcpager分页,搜索框传入的参数,在翻页的时候会丢失,猜测可能是页面首次载入的时候
直接在js记录了翻页的URL格式,并且缓存?点搜索之后
分页的URL实际上增加了搜索参数,不过程序并未处理,导致
点翻页并没有搜索效果。看翻页的HTML源码,实际上生成的翻页连接都是正确的,只不过点翻页的时候,可能是异步重新处理,并不是直接载入A标记的href值,烦请修正,或者给出一个暂时的解决方法。谢谢。
回复:您好,保存url格式是为了页索引文本框或下拉框跳转页索引时使用,这种情况下可能有您说的问题,而点击分页按钮不会使用此url格式,所以不应该存在这样的问题,您是否可以把重现这个问题的示例发到我的gmail邮箱看下?邮箱名是webdiyer。谢谢!

2017-12-15 12:00  lvjin

如果调用这个方法:
        public static MvcHtmlString Pager(this AjaxHelper ajax, IPagedList pagedList, string routeName, object routeValues, PagerOptions pagerOptions,
            MvcAjaxOptions ajaxOptions, object htmlAttributes)
自定义路由之后,会有一个BUG,所有的翻页Page都是0,
因为data-urlformat参数给Page赋值之后,会被GenerateUrl方法中处理自定义路由代码:                    routeValues[_pagerOptions.PageIndexParameterName] = pageIndex; //清除参数 添加自定义路由及其分页
重新赋值成0.
回复:您好,没有听说或见过这个bug,不知道您用的是哪个版本的MvcPager?能否把重现这个问题的示例给我发一份?我的gmail邮箱名是webdiyer。谢谢!

2017-12-12 15:13  哇哈哈

插件是不错的!厉害了!但是如果我要额外再带上多个参数怎么弄?
回复:您好,不知道您说的是哪个插件?如果是MvcPager,它的PagerOptions属性中有RouteValues可以把参数传递到生成的分页url中。谢谢!

2017-12-11 18:08  Phni

您好杨老师,
使用Webdiyer.MvcPager3.0.1.1版本Ajax分页,如果取出的数据集排序字段内容相同时第三页以后的数据都是相同的;排序字段不重复时取出的数据集进行分页是没有问题的。

控制器代码:
public IPagedList<T> ToPagedList<S>(Expression<Func<T, bool>> where, Expression<Func<T, S>> orderBy, bool firstIsAsc,bool thenIsAsc,int page)
        {
            var list = where == null ? context.Set<T>() : context.Set<T>().Where(where);

            if (firstIsAsc)
            {
                list = list.OrderBy<T, S>(orderBy);
            }
            else
            {
                list = list.OrderByDescending<T, S>(orderBy);
            }

            int pageSize = Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["pageSize"]);

            return list.ToPagedList(page, pageSize);
        }

当数据库orderBy字段内容相同的时候分页第三页及以后的页面数据没有变更,第一二页是正常的;排序字段orderBy换成唯一值的时候分页没有问题
回复:您好,排序字段有重复值没有关系,ToPagedList扩展方法内部使用Skip().Take方法获取分页数据,从上面的代码看,您进行了二次封装,不知道您用的是什么数据库?您可以调试一下ToPagedList方法生成的sql语句看看问题出在哪里。谢谢!
;