问题描述
AspNetPager分页的时候,把数据绑定到ReaPeter上能够看到一共几页每页显示几条数据,说明已经分出了页。但是在点击下一页和尾页的时候就出现javascript运行错误,无法设置未定义或null引用的属性“value”。很郁闷!!!先谢谢各位大神帮助!!!!!!!!!!!相关代码如下:前台页:已经引入AspNetPager.dll<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="ximapiclist.aspx.cs"Inherits="Web.ximapiclist"%><%@RegisterAssembly="AspNetPager"Namespace="Wuqi.Webdiyer"TagPrefix="webdiyer"%><ul><asp:RepeaterID="repnew"runat="server"><ItemTemplate><li><imgsrc="<%#Eval("img_url").ToString()==""?"admin/skin/default/loadimg.gif":Eval("img_url").ToString()%>"><divclass="desc"><divclass="d-price"><iclass="view"></i>view</div><divclass="d-name"><%#DataBinder.Eval(Container,"DataItem.zhaiyao").ToString().Length>12?DataBinder.Eval(Container,"DataItem.zhaiyao").ToString().Substring(0,12)+"...":DataBinder.Eval(Container,"DataItem.zhaiyao").ToString()%></div></div><br><ahref="news_info.aspx?fid=<%#Eval("category_id")%>&id=<%#Eval("id")%>"title="<%#Eval("Title")%>"target="_blank"><divclass="d-shadow"><pclass="d-s-1"><%#DataBinder.Eval(Container,"DataItem.Title").ToString().Length>12?DataBinder.Eval(Container,"DataItem.Title").ToString().Substring(0,12)+"...":DataBinder.Eval(Container,"DataItem.Title").ToString()%></p><span><iclass="view"></i>view</span></div></a></li></ItemTemplate></asp:Repeater></ul>
CS文件://绑定列表数据privatevoidBind(){intid;if(int.TryParse(Request.QueryString["id"],outid)){BLL.articlebll=newBLL.article();DataViewdv=bll.GetList(10000,"status=0andcategory_idin(selectidfromax_article_categorywhereclass_listlike'%,"+id+",%')","is_topdesc,sort_idasc,add_timedesc").Tables[0].DefaultView;PagedDataSourcepds=newPagedDataSource();AspNetPager1.RecordCount=dv.Count;pds.DataSource=dv;pds.AllowPaging=true;pds.CurrentPageIndex=AspNetPager1.CurrentPageIndex-1;pds.PageSize=AspNetPager1.PageSize;repnew.DataSource=pds;repnew.DataBind();}}//分页protectedvoidAspNetPager1_PageChanged(objectsrc,EventArgse){Bind();}
BLL层:///<summary>///获得前几行数据///</summary>publicDataSetGetList(intTop,stringstrWhere,stringfiledOrder){returndal.GetList(Top,strWhere,filedOrder);}
DAL层///<summary>///获得前几行数据///</summary>publicDataSetGetList(intTop,stringstrWhere,stringfiledOrder){StringBuilderstrSql=newStringBuilder();strSql.Append("select");if(Top>0){strSql.Append("top"+Top.ToString());}strSql.Append("id,channel_id,category_id,call_index,title,link_url,img_url,seo_title,seo_keywords,seo_description,zhaiyao,content,sort_id,click,status,groupids_view,vote_id,is_top,is_red,is_hot,is_slide,is_sys,is_msg,user_name,add_time,update_time");strSql.Append("FROMax_article");if(strWhere.Trim()!=""){strSql.Append("where"+strWhere);}strSql.Append("orderby"+filedOrder);returnDbHelperSQL.Query(strSql.ToString());}
解决方案
本帖最后由 x_aini 于 2015-11-02 16:32:38 编辑
解决方案二:
在百度上看到一个和我问题很相似的回答。因为我的代码调试中就出现那样的问题,但由于比较菜,看不太懂。百度上的一篇回答是这样的:__doPostBack可以实现客户端控件调用服务器端控件的响应,__doPostBack方法的格式为:__doPostBack(eventTarget,eventArgument) 参数: eventTarget:是要触发的服务器控件的客户端ID eventArgument:参数这个两个值在后台可以通过下边方法得到:Request["__EVENTTARGET"]:获取得到引发页面PostBack的控件IDRequest["__EVENTARGUMENT"]:获取参数。在VS调试里出现的代码和上面说的一样:<div><inputtype="hidden"name="__VIEWSTATEGENERATOR"id="__VIEWSTATEGENERATOR"value="6059E73B"/><inputtype="hidden"name="__EVENTTARGET"id="__EVENTTARGET"value=""/><inputtype="hidden"name="__EVENTARGUMENT"id="__EVENTARGUMENT"value=""/></div><scripttype="text/javascript">//<![CDATA[vartheForm=document.forms['form2'];if(!theForm){theForm=document.form2;}function__doPostBack(eventTarget,eventArgument){if(!theForm.onsubmit||(theForm.onsubmit()!=false)){theForm.__EVENTTARGET.value=eventTarget;theForm.__EVENTARGUMENT.value=eventArgument;theForm.submit();}}//]]></script>就是在代码中蓝色部分出错,给出的报错是:JavaScript运行时错误:无法设置未定义或null引用的属性“value”
解决方案三:
看你通票分页用的是pds,还是让作者来回答你吧
解决方案四:
控件namespace点后面的单词就是作者在这个论坛的id,你可以@他
解决方案五:
引用3楼starfd的回复:
控件namespace点后面的单词就是作者在这个论坛的id,你可以@他
好吧。。。。。。。急啊,估计等不了作者回答了。。。。。。
解决方案六:
看来是再没有人回答了,唉,我怎么连分页都不会啊。哪位高手能够给我说说我怎么才能给ReaPeter控件分页呢?
解决方案七:
这个问题其实和AspNetPager本身没有关系,AspNetPager生成postback的分页代码用的是ASP.NET的内置方法,如果AspNetPager有这样的问题,那么其它回发控件都应该一样,不知道你用的是官方下载的还是别人修改的?另外你也没有说明你用什么浏览器,什么版本的.net框架,.Net2.0和4.0有个不能判断IE10浏览器的bug,该bug会导致在IE10中打开需要回发的asp.net页面时,asp.net没有注册__doPostBack函数,导致无法回发,解决这个问题需要打补丁,详情看这篇博客文章:
解决方案八:
引用6楼webdiyer的回复:
这个问题其实和AspNetPager本身没有关系,AspNetPager生成postback的分页代码用的是ASP.NET的内置方法,如果AspNetPager有这样的问题,那么其它回发控件都应该一样,不知道你用的是官方下载的还是别人修改的?另外你也没有说明你用什么浏览器,什么版本的.net框架,.Net2.0和4.0有个不能判断IE10浏览器的bug,该bug会导致在IE10中打开需要回发的asp.net页面时,asp.net没有注册__doPostBack函数,导致无法回发,解决这个问题需要打补丁,详情看这篇博客文章:
.net4版本的,浏览器我用谷歌IE都测试过。ASPNetPager是别人项目源码里的。不知道是不是改动过。感谢您的回答,我先看看您给的连接,谢谢。
解决方案九:
引用6楼webdiyer的回复:
这个问题其实和AspNetPager本身没有关系,AspNetPager生成postback的分页代码用的是ASP.NET的内置方法,如果AspNetPager有这样的问题,那么其它回发控件都应该一样,不知道你用的是官方下载的还是别人修改的?另外你也没有说明你用什么浏览器,什么版本的.net框架,.Net2.0和4.0有个不能判断IE10浏览器的bug,该bug会导致在IE10中打开需要回发的asp.net页面时,asp.net没有注册__doPostBack函数,导致无法回发,解决这个问题需要打补丁,详情看这篇博客文章:
您能帮我看一下不,在别人的代码里好好的,我原封不动的把代码用过来,就出现错误。。。
解决方案十:
好了作者已经出现了。