留言簿
留言成功,请等待站长审核,谢谢支持!
2017-01-05 13:36 文彬
Hi杨涛:
我用MvcPager,有个小问题,数据一共11条,共2页,一页10条。我删除一条后回到页面,页码还是2,但点击2,显示页码超出范围。然后F5刷新一下就好了。每次删除数据后页面不变,F5才正常。
function delImg_Click(enterpriseId)
{
layer.open({
type: 2,
title: '删除',
shadeClose: true,
shade: 0.8,
offset: ['150px', '250px'],
area: ['380px', '250px'],
content: 'DeleteEnterprise?id=' + enterpriseId
})
return false;
}
@using (Html.BeginForm("DeleteEnterprise", "Enterprise",FormMethod.Post))
{
<div style="float:left;margin-left:15px;margin-top:10px;">
<label style="font-size:16px;margin-top:10px;">您确定要删除该帐号吗?</label>
<div style="clear:both;"></div>
<div style="margin-top:30px;text-align:center;">
<input name="id" style="display:none;" value="@Request.QueryString["id"]" />
<input type="submit" class="buttonstyle" value="删除" />
<input type="button" class="buttonstyle" value="取消" onclick="closeLayer();" />
</div>
</div>
}
controller:
[HttpGet]
public ActionResult DeleteEnterprise()
{
return View();
}
[HttpPost]
public ActionResult DeleteEnterprise(int id)
{
//调用删除操作
int result = _enterpriseService.deleteEnterpriseById(id);
if (result > 0)
{
return RedirectToAction("GetEnterPriseInfo");
}
return Content("删除出错!");
}
之前都用aspx,分页用AspNetPager很方便。刚接触MVC。
麻烦有时间看看多谢!
回复:您好,这是缓存的问题,您需要把客户端和服务器端缓存都禁用掉,或者在url后加个随机参数即可。谢谢!
2017-01-04 19:07 wenbin
hi您好,有个问题请教,我用MvcPager分页查询,正常列表和点击页码都没有问题。但点击搜索图标发现问题,通过debug后台可以得到符合条件的结果,debug进到页面也可以看到Model中内容符合搜索条件,但最后页面显示却没变,还是和刚进去时一样。有空请帮我看看多谢!
部分代码:
controller:
int totalCount = 0;
int pageIndex = id ?? 1;
int pageSize = 10;
PagedList<EnterpriseViewModel> pagerInfo = _enterpriseService.GetEnterpriseList(key, pageIndex, pageSize, ref totalCount).AsQueryable().ToPagedList(pageIndex, pageSize);
pagerInfo.TotalItemCount = totalCount;
pagerInfo.CurrentPageIndex = (int)(id ?? 1);
return View(pagerInfo);
页面部分代码:
function searchEnterprise()
{
var keyWords = $("#key").val();
$.ajax({
url: "../Enterprise/GetEnterPriseInfo?id=1" + "&key=" + keyWords,
type: "GET"
});
}
@using (Ajax.BeginForm("GetEnterPriseInfo", "Enterprise", new RouteValueDictionary { { "id", "searchForm" } }, new AjaxOptions { UpdateTargetId = "accounts", HttpMethod = "GET", InsertionMode = InsertionMode.Replace }))
<div class="container" style="float:left;margin-top:20px;margin-left:15px;">
<div class="col-md-8">
@Ajax.Pager(Model, new PagerOptions
{
PageIndexParameterName = "id",
FirstPageText = "首页",
PrevPageText = "上一页",
NextPageText = "下一页",
LastPageText = "末页",
NumericPagerItemCount = 10,
Id = "flickrpager",
CurrentPagerItemTemplate = "<span class=\"current\">{0}</span>",
DisabledPagerItemTemplate = "<span class=\"disabled\">{0}</span>",
}).AjaxOptions(a => a.SetUpdateTargetId("accounts").SetDataFormId("searchForm"))
</div>
</div>
js都正确导入的
回复:您好,从上面的代码中看不出什么问题,很可能是更新目标,也就是UpdateTargetId所指向的html元素有问题导致搜索后没有更新,您需要用浏览器的F12开发者工具调试检查,看是否有脚本错误。谢谢!
2016-12-21 17:25 向上看
当设置了PrevPageText和NextPageText之后,就会发现这两个按钮刚好反了,原本的上一页,链接变成了下一页,而原来的下一页,却变成了上一页。请问该如何正确设置?
回复:您好,请问您说的是哪个控件?AspNetPager还是MvcPager或者UrlPager?什么版本?是否用了逆向分页功能?谢谢!
2016-12-08 16:16 邢波
在使用.net MVC pager 后其他地方用JQ的ajax提交数据时很受影响,主要是在ajax提交时的url被分页的地址强行加载到ajax的url前 比如:
@using (Ajax.BeginForm("glyphicon","Sys_Icon", new RouteValueDictionary { { "id", 1 } },
new AjaxOptions
{
UpdateTargetId = "tb",
InsertionMode = InsertionMode.Replace,
OnBegin = "begin",
OnSuccess = "secc()",
OnFailure = "err()"
},
new RouteValueDictionary { { "id", "searchForm" } }))
{
<div class="row" style="text-align:left">
<div class="form-inline" style="padding-left:8px;padding-right:10px;">
<div class="form-group" style="margin-bottom:5px;">
<select id="selectvalue" name="selectvalue" class="form-control" title="请选择...." style="text-align:left;padding-left:0px;">
<option value="IconName" selected="selected">图标中文</option>
<option value="IconStatus">状态</option>
<option value="EditName">修改人</option>
</select>
<input type="text" id="values" name="values" placeholder=" 关键字......" class="form-control" style="padding-left:0px;padding-right:0px;" />
<button type="button" id="btnSave" class="btn btn-default">搜索</button>
</div>
</div>
</div>
}
---------------------------------
他会显示地址为 http://localhost:16875/Admin/Sys_Icon/glyphicon/2
--------------------------
下面用ajax提交数据
$.ajax({
async: false,
data: { id: tmpid },
url: "Sys_Icon/GetglyphiconbyID",
type: "post"})
--------------
在网页调试器里显示要提交的地址是
http://localhost:16875/Admin/Sys_Icon/glyphicon/Sys_Icon/GetglyphiconbyID
因为根本就没有上面的地址,所以就出错了,请问有办法把url里的地址在ajax里控制吗?
回复:您好,这个问题和MvcPager没有任何的关系,您在ajax方法中传递的地址不应该是针对当前地址的相对地址,而应该是相对于网站根目录的相对路径,如 /sys_icon/...,或用@Url.Content()方法将相对路径转换为绝对路径。谢谢!
2016-12-01 11:17 fan
public static PagedList<T> ToPagedList<T>
(
this IQueryable<T> allItems,
int pageIndex,
int pageSize
)
{
if (pageIndex < 1)
pageIndex = 1;
var itemIndex = (pageIndex - 1) * pageSize;
var pageOfItems = allItems.Skip(itemIndex).Take(pageSize).ToList();
var totalItemCount = allItems.Count();
return new PagedList<T>(pageOfItems, pageIndex, pageSize, totalItemCount);
传递IQueryable<T>参数进去 分页的页码跟实际查询出来的数据页码对不上
IQueryable<T> 并没有执行查询条件 总条数为表中所有的数据
怎么破?
ToList的话 数据量上来以后加载超时
回复:您好,您是如何调用的呢?
2016-11-30 21:14 黄秀林,
您好:杨涛老师: 首页感谢您提供的组件,现在遇到一个问题,就是AspNetPager 这个控件,不放“<form id="form1" runat="server">”这里能用吗,以前始终是放在form里的,现在因为一些原因不能用Form.
回复:您好,如果用默认的Postback分页,则必需放在服务器端form中,如果是url分页,则可以不用服务器端form。谢谢!
2016-11-30 10:41 wihate
好吧,我用的就是UrlPager2.0版本的。我以为只有一个版本! 而且说的这两个问题的确存在: 1、控件和Microsoft.AspNet.FriendlyUrls 的routes.EnableFriendlyUrls()有冲突,配置的地址的名字和文件名相同,分页功能不起作用; 2、设置NumericPagerItemCount为10,如果不足10页的话,居然用负数页码补足10项。 你可以测一下。
回复:谢谢提供反馈信息,我这几天抽时间检查一下,不知您是否有可以直接重现这些问题的示例项目,有的话发给我看看。谢谢!
2016-11-29 23:32 小王
可以加个根据字段排序的功能吗,如果有需求要加的话该怎么改代码呢。
回复:您好,分页和排序没有直接关系,因为分页功能和数据是独立的,排序完全可以按自己的需要去实现。谢谢!
2016-11-29 22:27 地鼠
非常感谢您的回复提取源码跟踪调式后因本人程序造成,现已处理
//public sealed override void Write(object value)
//{
// Output.Write(value);
//}
回复:不客气,解决了就好,谢谢!
2016-11-29 17:23 地鼠
你好,非常感谢你的产品帮助我不了忙,但在开发过程中碰到了一个问题,当我"自定义 Razor 视图的基类后",分页无法再进行使用!直接输出“Webdiyer.WebControls.Mvc.AjaxPager”
回复:您好,您能详细说明一下“自定义 Razor 视图的基类”是如何实现的吗?或者您有可以重现这个问题的最简单的示例可以发给我看看吗?谢谢!