留言簿

我要留言
留言搜索

2008-07-07 11:57  xft_1981

aspnetpager分页控件的确让我眼前一亮,不过反思之后,觉得仍有疑问:<br>我使用了URL分页,并且也做了伪静态化的处理,现在URL变为 ../News/1.html,../News/2.html,分别代表新闻的第一页也第二页,可是我发现搜索引擎只能收录第一页的东西,对第二页似乎并不感冒,另外,即使收录了第二页也会出问题,比如现在第二页有个新闻&lt;汶川地震&gt;,可是以后我们又添加了好多新闻,把《汶川地震》这篇文章不知道撑到哪一页了,这个如何解决?如果别人百度搜索,在第二页可能就找不到这篇文章。恳求版主答复
回复:您好,第一个问题,只要这样的url能够直接访问,搜索引擎就可以收录当前页面上的数据;第二个问题,您可以通过设置ReverseUrlPageIndex为true使用逆向分页法来使数据所在的页索引Url不会随记录增加而改变。谢谢!

2008-07-07 11:44  zhangbing

对不起!回答刚才我提问的那条,是我自己配置错误了,UrlPaging=true 改为UrlPaging=false 就好了。
回复:已经回复了,才看到这条留言,我是从后往前回复的:)

2008-07-07 11:37  zhangbing

版主您好,感谢你的无私贡献,现在有一个问题向你请教,使用控件翻页功能的时候,把我其它控件的状态都恢复到了第一次加载时候的初始值了。例:页面上有个查询框Textbox ,一个gridView, 一个查询按钮Button,还有一个分页控件AspNetPager(7.0.2),当我使用查询事件(Button的事件)且改变查询条件(Textbox的值 )显示正常,当我使用分页控件的分页事件(AspNetPager1_PageChanged)且改变查询条件的时候显示不正常,具体问题是不管我把查询条件改成什么,它都会给我恢复到第一加载页面的值,不知道我有没有说清楚,下面是我的代码:<br> protected void Page_Load(object sender, EventArgs e)<br>    {<br>        if (!IsPostBack)<br>        {<br>            txt_Serch.Text = &quot;&quot;;<br>            bindData();//绑定数据<br><br>        }<br>        AspNetPager1.RecordCount = fcbll.GetCurrentFualtRecordCount(txt_Serch.Text); //AspNetPager1控件赋记录总数<br>    }<br><br>private void bindData()<br>    {        <br>        IList&lt;CFaultCurrentInfo&gt; list = fcbll.Search(txt_Serch.Text);<br>        gv.DataSource = list;<br>        gv.DataBind();        <br>    }<br><br>protected void AspNetPager1_PageChanged(object sender, EventArgs e)<br>    {<br>        bindData();<br>    }<br>    protected void btSearch_Click(object sender, EventArgs e)<br>    {<br>        AspNetPager1.CurrentPageIndex = 1;<br>        bindData();<br>    }<br>不知使用方式有什么问题没有?
回复:您好,您的意思是每次分页后都象第一次打开页面一样吗?如果是这样,那问题应该在于您用了Url分页引起的,Url分页方式下每次分页都是打开一个新页面,而不是回发,所以所有回发后改变的数据和状态都会丢失,解决这个问题您需要使用默认的PostBack分页方式才行。谢谢!

2008-07-07 09:25  tiancaolin

不好意思,我下面提的表述错了。请看这里描述:<br>=============================<br>我的项目因特殊原因,在页面有两个Repeater。第一个简单称为RepeaterA<br>第二个简称为RepeaterB<br>在页面显示的时候,使用AspNetPager来控制第二个RepeaterB进行分页,第一个RepeaterA可知数据源最多不会超过30行。<br>============<br>那我的问题是,RepeaterA显示的列表和RepeaterB相似。那么我在页面呈现的时候,我想让人家看到每个页面都固定有30条。但第一个页面比较特殊:如果RepeaterA有12条。那么RepeaterB则第一页只能显示30-12=18条。当用RepeaterB分页控件打开第二分页或其他分页的时候,由于RepeaterA已经没有数据源了。所以RepeaterB必须显示30条。<br>这个问题要怎么在AspnetPager实现呢?<br>能帮解决下吗?最好有个参考的案例。谢谢<br>我的E_mail:tiancaolin@163.com
回复:您的意思是动态改变每页显示的记录数吗?您可以试试在分页事件处理程序中,根据当前页索引来设置PageSize属性的值,比如这样: if(AspNetPager1.CurrentPageIndex>1) //非第一页
AspNetPager1.PageSize=30;
而第一页时分页控件的PageSize属性可以在给RepeaterA绑定数据时用30减去RepeaterA的记录数计算后设置。谢谢!

2008-07-07 09:22  tiancaolin

您好!我的项目因特殊原因,在页面有两个Repeater。第一个简单称为RepeaterA<br>第二个简称为RepeaterB<br>在页面显示的时候,使用AspNetPager来控制第二个RepeaterB进行分页,第RepeaterA可知数据源最多不会超过30个。<br>============<br>那我的问题是,RepeaterA显示的列表和RepeaterB相似。那么我在页面呈现的时候,我想让人家看到每页都固定有30条。但第页面比较特殊:如果RepeaterA有15条。那么RepeaterB则第一页只能显示30-12=18条。当用RepeaterB分页控件打开第二分页或其他分页的时候,由于RepeaterA已经没有数据源了。所以RepeaterB必须显示30条。<br>这个问题要怎么在AspnetPager实现呢?<br>能帮解决下吗?最好有个参考的案例。谢谢<br>我的E_mail:tiancaolin@163.com
回复:您好,非常抱歉,或许您的问题真的比较特殊,我认真看了四遍仍看不懂您的意思,比如“如果RepeaterA有15条。那么RepeaterB则第一页只能显示30-12=18条”这是怎么计算出来的?“由于RepeaterA已经没有数据源了。所以RepeaterB必须显示30条”这又如何理解呢?RepeaterA和RepeaterB是什么关系呢?

2008-07-06 08:26  jyganjun

你好<br>AspNetPager 页面不显示控件<br>后台代码<br>protected void Page_Load(object sender, EventArgs e)<br>    {<br>        AspNetPager1.RecordCount = 22;<br><br>        searchOrders();<br>    }<br>    void searchOrders()<br>    {<br>        string ID;<br>         <br>         ID = &quot;18&quot;; <br>       <br><br>        string SQL = &quot;SELECT [ID], [DisplayOrder],点名称, [标石号], 标石加号,[点名称], [坐标x], [坐标y],  [记录时间], [节点属性],[节点属性id],[节点类型ID],  [节点类型],[海拔],&quot;<br>             + &quot;[备注] FROM [AKpatrol].[dbo].[线路普查数据 ] WHERE XLID=&quot; + ID.Trim();<br><br>        DBClass MyConn = new DBClass();<br>        MyConn.DBInit();<br>        DataView dv = MyConn.GetDataView(SQL);<br>        AspNetPager1.RecordCount = dv.Count;<br><br>        PagedDataSource pds = new PagedDataSource();<br>        pds.DataSource = dv;<br>        pds.AllowPaging = true;<br>        pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;<br>        pds.PageSize = AspNetPager1.PageSize;<br><br>        if (dv.Count == 0)<br>        {<br>            DBClass MyConn1 = new DBClass();<br>            MyConn1.DBInit();<br>            DataSet ds = MyConn1.getDataSet(SQL);<br><br><br>            ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());<br><br>            JWD_DataGrid.DataSource = ds;<br><br>            JWD_DataGrid.DataBind();<br><br>            int columnCount = JWD_DataGrid.Rows[0].Cells.Count;<br><br>            JWD_DataGrid.Rows[0].Cells.Clear();<br><br>            JWD_DataGrid.Rows[0].Cells.Add(new TableCell());<br><br>            JWD_DataGrid.Rows[0].Cells[0].ColumnSpan = columnCount;<br><br>            JWD_DataGrid.Rows[0].Cells[0].Text = &quot;没有记录.&quot;;<br>        }<br>        else<br>        {<br>            JWD_DataGrid.DataSource = pds;<br>            JWD_DataGrid.DataBind();<br>        }<br><br>    }<br><br>    protected void AspNetPager1_PageChanged(object sender, EventArgs e)<br>    {<br>        searchOrders();<br>    }
回复:您一页显示多少条记录呢?如果总记录数小于PageSize,分页控件默认就不显示,因为只有一页,如果要在只有一页数据的情况下显示分页控件,将属性AlwaysShow设为true即可。

2008-07-05 09:46  soldierluo

您好,我使用的是Teach_Socut_Data_V3中的dll,示例中的代码我都试用了一遍,但是出现了两个问题,一是找不到CenterCurrentPageButton属性,无法设置居中;二是无法试用url重写技术,代码如下:<br>AspNetPager1.UrlPaging = true;<br>AspNetPager1.EnableUrlRewriting = true;<br>不论我使不使用UrlRewritePattern都一样返回<br>无法找到资源。 <br>说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除<br>请问这是为什么
回复:您好,第一个问题,应该是版本太低引起的,您看看AspNetPager.dll版本是否是7.0.2。第二个问题,设置UrlRewritePatter并不会帮您实现Url重写,只是改变了分页时跳转的Url而已,您还需要用第三方组件或自己实现Url重写功能才行。

2008-07-04 21:08  soldierluo

请问,如果我要对搜索的数据进行分页该如何来进行,我想使用的是通过url进行传值的如:test_bindData.aspx?page=17&amp;kw=searchword<br>这样又该如何来使用呢,谢谢
回复:您好,示例项目中就有通过Url传值进行搜索的例子,您可以参考一下。谢谢!

2008-07-04 20:53  jyk0011

declare @indextable table(id int identity(1,1),nid int)<br><br>表变量的方法,主键必须是int类型的吗?
回复:您说的主键是指要分页的记录所在的表的主键吗?这个字段可以是任何类型,只要是主键(且非联合主键),没有重复值即可。

2008-07-04 19:54  soldierluo

你太牛了,真是好东西,虽然我还不知道怎么用也不知道能不能把它摸透,但是一定的是要谢谢你^_^
回复:别急,慢慢来:)有问题可以到这里来问,谢谢!
;