我是通过一个存储过程对datalist分页的,然后通过动态建立linkbutton,当点击linkbutton的时候,会重写url,根据url的参数来分页的,这样的缺点是每次分页都要重写绑定url,并且没有if(!ispostback)内的代码。
当点击每一个item内的 button的时候会报错:
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。
这个是由于绑定的datalist的时候绑定的方法没有在if(!ispostback)。我想问问高手们,datalist有没有更好的分页方式,不是通过url重写queryString的方式的。自定义分页最下面的页码的按钮该如何实现,只能通过动态创建linkbutton?

解决方案 »

  1.   

    http://www.google.cn/search?complete=1&hl=zh-CN&newwindow=1&rls=com.microsoft%3A*%3AIE-SearchBox&rlz=1I7GGIJ&q=%22scott+mitchell%22+datalist+%E5%88%86%E9%A1%B5&btnG=Google+%E6%90%9C%E7%B4%A2&meta=lr%3Dlang_zh-CN%7Clang_zh-TW&aq=f&oq=你自己编写的代码很多,并不代表技术如何。好的程序,往往不会拼命重复编写人家已经成熟的代码,而仅仅是扩展人家的框架上的必须的一些插件而已。
      

  2.   

    在Mitchell的那个文章里,不会出现你说的“这个是由于绑定的datalist的时候绑定的方法没有在if(!ispostback)”这类感慨。因此,我建议你尽量不要再写asp.net1.1的编程示例中才常见的那类数据绑定代码,而使用DataSource控件,因为它已经对正常的绑定逻辑封装好了。“少写代码”也许不是每一个人编程的最终目的,但是至少你可以回避很多浪费时间的问题。
      

  3.   

    如果你监视调用你的存储过程的代码,你会发现当你正常地使用SqlDataSource(或者ObjectDataSource)时,页面回发时大多数时候并不调用这个存储过程。实际上,只有在通过页面更新数据库资料时才会(其实是在页面的PreRender而不是在load时段才会)调用你的存储过程。