留言簿

我要留言
留言搜索

2008-08-27 23:38  Profibus

博主不错,佩服+感谢!
回复:不客气,谢谢!

2008-08-27 16:57  jammey1

我使用的是urlpage分页方式,分页的数据来自一个泛型数组<br><br>/// &lt;summary&gt;<br>    /// 分页<br>    /// &lt;/summary&gt;<br>    /// &lt;param name=&quot;arr&quot;&gt;&lt;/param&gt;<br>    /// &lt;param name=&quot;start&quot;&gt;&lt;/param&gt;<br>    /// &lt;param name=&quot;pagesize&quot;&gt;&lt;/param&gt;<br>    /// &lt;returns&gt;&lt;/returns&gt;<br>    private List&lt;ResultItem&gt; pager(List&lt;ResultItem&gt; arr, int start, int pagesize)<br>    {<br>        if ((start + pagesize - 1) &gt;= arr.Count)<br>        {<br>            return arr.GetRange(start - 1, arr.Count - start + 1);<br>        }<br>        else<br>        {<br>            return arr.GetRange(start - 1, pagesize);<br>        }<br>    }<br>以下是调用的方法。但是在changed方法里面,this.ap1.StartRecordIndex一直都是1.是怎么回事?要自己获取page参数的值,然后计算吗?CurrentPageIndex那个参数也是1.<br>如果在page_load方法里面也绑定一下的话,发现绑定两次,这样第二次绑定的那个CurrentPageIndex和StartRecordIndex都是正确的。是什么问题呢?<br>pager(Cache[username] as List&lt;ResultItem&gt;, this.ap1.StartRecordIndex, 10)
回复:ap1是什么?是AspNetPager的ID吗?StartREcordIndex不可能每次都是1,只有第一页是1才是正确的,您最好能帖出完整的分页代码,从这里看不出来问题。

2008-08-26 15:29  tiancaolin

这个重写方法的几个判断分支语句帮解释下?<br>if (custom == &quot;cao&quot; &amp;&amp; context.Request.Cookies[&quot;passport&quot;] != null)<br>{<br>return context.Request.Cookies[&quot;passport&quot;].Value;   //返回这个自定义的值要干嘛????如果说这个是关联缓存的页面内存名称,那我为了有缓存要怎么在页面设置那个passport的Cookies值<br>}<br>else<br>{<br>return base.GetVaryByCustomString(context, custom);  //这个是默认系统的,跟缓存有何关系<br>}
回复:这很简单啊,.net框架根据GetVaryByCustomString返回的值的不同来为asp.net页面缓存不同的版本,上面的例子中,如果当前的Cookies["passport"].Value的值是"a",那么访问启用自定义缓存的页面时,.net框架引擎就会先查找缓存中为“a”这个值缓存的页面,如果有就直接显示缓存的页面,如果没有就缓存一份,以后再访问时只要Cookies["passport"].Value的值是“a”并且缓存的页面没有过期,.net框架引擎就会直接显示缓存的页面,如果Cookies["passport"].Value的值变成了“b”或者其它不同的值,那么访问这些页面时.net框架会重新把这些页面缓存一次,而不是显示以前为“a”缓存的页面,至于第二个问题,因为Cookies["passport"]是null,用cookie判断没有作用了,所以就返回系统默认的值。

2008-08-26 15:26  tiancaolin

请教一个缓存问题,吴前辈<br>===============================<br>  public override string GetVaryByCustomString(HttpContext context, string custom)<br>    {<br>        if (custom == &quot;cao&quot; &amp;&amp; context.Request.Cookies[&quot;passport&quot;] != null)<br>        {<br>            return context.Request.Cookies[&quot;passport&quot;].Value;<br>        }<br>        else<br>        {<br>            return base.GetVaryByCustomString(context, custom);<br>        }<br>    }<br><br><br>&lt;%@ OutputCache VaryByParam=&quot;none&quot; VaryByCustom=&quot;cao&quot; Duration=&quot;3600&quot; %&gt;<br><br><br>我实在看不明白VaryByCustom=&quot;cao&quot; 对应重写 GetVaryByCustomString的关系??<br>为什么说改变名为passport的Cookies缓存就会失效。那为了缓存,我是不是该在那个缓存的页面Page_Load中提前设置Cookies[&quot;passport&quot;]的值。<br>这个原理您能帮解释下吗?拐不过弯来。谢谢
回复:您好,关于这个问题,您可以看一下帮助.Net Frameword文档中的说明:http://msdn.microsoft.com/zh-cn/library/5ecf4420(VS.80).aspx,谢谢!

2008-08-26 15:18  hzsasheng

1.页次:1 / 25页 主题数: 738    <br>2.分页: 1   2   3   4   5   6   7   8   9   10    <br><br>你好,有什么办法可以让前面的1 跟 2 放在一起吗?因为现在是2个div,他们之间分开的距离比较远~~请教~~
回复:您好,因为这是两部分,所以不能合并在一起,不过您可以通过设置CustonInfoTextAlign为Right右对齐即可与页索引按钮靠在一起。

2008-08-26 12:56  tiancaolin

您最好把中文编码后再传递。<br>===========<br>我重写后,那个中文编码已经是用<br>Server.UrlEncode的了。<br>也就是中文我已经加密成<br>%E9%94%AF%E7%89%87<br>但翻页后,重新获取这个中文就乱码或接受不是中文原值。这还要怎么传递编码吗》?
回复:请看上一个帖子的加复。谢谢!

2008-08-26 12:54  tiancaolin

原帖子内容:<br>采用Intelligte.UrlRewrite重写URL后,<br>发现使用你的控件,在页面第一次进入后获取UrlEncode的中文参数正常,但再次点击分页后,就无法正常取得我的中文参数。<br>详细例子:<br>/Trade/%E9%94%AF%E7%89%87_BuySearch.shtml<br><br><br>====》对应<br>/Trade/BuySearch.aspx?Skey=%E9%94%AF%E7%89%<br><br>我用的是7.0.2.0<br>您的回复:那就可能是浏览器或者IIS引起的问题,或者是asp.net程序编码设置导致的,您最好把中文编码后再传递。<br>=====================<br>好像其他IE浏览器也是这个问题,asp.net编码改前改后都一个样。您可以按我的那种重写地址测试下吗?谢谢了~~~实在是解决不了的
回复:您好,我用如下url:http://localhost/test.aspx?skey=%e9%94%af%e7%89%87 测试了一下,无论分多少次页skey的参数都是正确的,您的例子中,参数传递过来后少了参数值最后那个87,应该检查一下是否是您的url重写引起的问题,您可以先不要使用url重写看看参数传递是否正确。

2008-08-26 01:03  alexzchen

可否给一个完整的 三层结构分页的示例?函数直接返回dataset的。非常需要,感谢、感谢~!
回复:示例项目中有就有一个三层结构的示例,其实在三层结构中使用也没有什么特别的地方,只需要把分页控件的相关属性值,如CurrentPageIndex、PageSize或StartRecordIndex、EndRecordIndex的值传入数据层,数据层根据这些条件获取当前页的数据返回就可以了。

2008-08-26 01:02  alexzchen

你好,请问<br>1.你网站上工具生成的存储过程和控件里自带的那个工具生成的不一样啊<br>一个是用startIndx和endIndex判断,一个是用pageSize和pageIndex判断。那个比较好一点?<br><br>2.pageIndex这个参数是不是就是控件的currentPageIndex属性?<br><br>3.为什么我用网站工具生成的存储过程,取出的dataset总是只有一列,是记录的条数。我那个docount没有设成1啊
回复:您好,用StartRecordIndex还是CurrentPageIndex区别不大,不过用StartRecordIndex会方便一些,因为用CurrentPageIndex后在存储过程中还是要计算出起始记录索引后才能获取数据,用StartRecoredIndex直接就可以用而不需要再计算了。存储过程中的pageIndex参数对应的值就是分页控件的CurrentPageIndex的值。关于第三个问题,您能帖出您的存储过程看看吗?

2008-08-25 23:29  alexzchen

请问是否只有使用存储过程才能实现一次只取一页的数据??<br><br>是否不同的表必须写不同的存储过程来实现分页?不是通用的吧?
回复:用普通sql语句也可以一次获取一页的数据,但效率不是很好。分页存储过程也有通用的,但一般都是通过参数拼接成sql语句然后通过exec来执行这样的动态sql语句,使用比较复杂效率也不是很好,本站的“分页资源”栏目中就有邹健的通用分页存储过程,您可以看一下。谢谢!
;