当前位置:编程学习 > C#/ASP.NET >>

在用aspnetpager时候遇到的问题

不知道大家遇到过这种情况吗,就是aspnetpager的CurrentPageIndex属性有时可以赋值,有时无论赋值为多少,显示的值都为“1”,请问怎么解决啊。 --------------------编程问答-------------------- 你代码写的有问题。 --------------------编程问答-------------------- 无代码无易做图 --------------------编程问答-------------------- 代码应该是没问题的,我也断点测试过了,CurrentPageIndex赋值过后还是1,有人遇到过这种情况吗? --------------------编程问答-------------------- 那是因为数据没有保存

       private int currentPageIndex
    {
        get
        {
            if (ViewState["currentPageIndex"] != null)
            {
                return Convert.ToInt32(ViewState["currentPageIndex"].ToString());
            }
            else
            {
                return 1;
            }
        }
        set
        {
            ViewState["currentPageIndex"] = value;
        }
    }
--------------------编程问答-------------------- 这个需要赋值吗?这个值是控件动态获得的吧?你绑定数据是否没放在isPostBack里面? --------------------编程问答--------------------

public void BindGridView(int pageIndex)
    {
        
       AspNetPager1.CurrentPageIndex = pageIndex;
       Label12.Text = AspNetPager1.CurrentPageIndex.ToString();//测试赋值               
       OleDbDataAdapter da;
        Conn().Open();
        string choiceString;
        AspNetPager1.PageSize = 50;
        AspNetPager1.RecordCount = Int32.Parse(GetAllCount().ToString());
        choiceString = MakeString(TextBox1, TextBox2, TextBox3, TextBox4,
         TextBox5,TextBox6, TextBox7, TextBox8);
        da = new OleDbDataAdapter(choiceString, Conn());
        DataSet ds = new DataSet();
         da.Fill(ds, (pageIndex- 1) * AspNetPager1.PageSize, AspNetPager1.PageSize, "总表");
        GridView1.DataSource=ds.Tables[0];
        GridView1.DataBind();
        AspNetPager1.CustomInfoHTML = "记录总数:<b>" + AspNetPager1.RecordCount.ToString() + "</b>";
        AspNetPager1.CustomInfoHTML += " 总页数:<b>" + AspNetPager1.PageCount.ToString() + "</b>";
        AspNetPager1.CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";
    }

我在Page_Load(object sender, EventArgs e)里面写
if (!IsPostBack)
        {
                  BindGridView(2);
              }

Label12.Text 的值都为1! --------------------编程问答-------------------- 我主要是想实现功能是,我在主页面选择第n页,通过按钮弹出窗口,弹出窗口关闭后,刷新主页面,但是显示的页数还是第n页,所以需要对CurrentPageIndex赋值,大家有什么好方法吗? --------------------编程问答--------------------

public void BindGridView(int pageIndex)
    {
        AspNetPager1.RecordCount = Int32.Parse(GetAllCount().ToString());//这句放头上
                
       OleDbDataAdapter da;
        Conn().Open();
        string choiceString;
        AspNetPager1.PageSize = 50;
        
        choiceString = MakeString(TextBox1, TextBox2, TextBox3, TextBox4,
         TextBox5,TextBox6, TextBox7, TextBox8);
        da = new OleDbDataAdapter(choiceString, Conn());
        DataSet ds = new DataSet();
         da.Fill(ds, (pageIndex- 1) * AspNetPager1.PageSize, AspNetPager1.PageSize, "总表");
        GridView1.DataSource=ds.Tables[0];
        GridView1.DataBind();
        AspNetPager1.CustomInfoHTML = "记录总数:<b>" + AspNetPager1.RecordCount.ToString() + "</b>";
        AspNetPager1.CustomInfoHTML += " 总页数:<b>" + AspNetPager1.PageCount.ToString() + "</b>";
        AspNetPager1.CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";
AspNetPager1.CurrentPageIndex = pageIndex;
       Label12.Text = AspNetPager1.CurrentPageIndex.ToString();//测试赋值      
    }
--------------------编程问答--------------------  da.Fill(ds, (pageIndex- 1) * AspNetPager1.PageSize,pageIndex* AspNetPager1.PageSize, "总表");


还有如果本身我总共的PAGE只有一页怎么办?你设个2有什么用? --------------------编程问答-------------------- 我明白了,你PageIndex每次点第n页后,页面刷新,PageIndex都初始化了=1 --------------------编程问答-------------------- 你父页面SUBMIT一次也可以保持在同一页面啊。 --------------------编程问答--------------------
引用 9 楼 viewstates 的回复:
da.Fill(ds, (pageIndex- 1) * AspNetPager1.PageSize,pageIndex* AspNetPager1.PageSize, "总表");


还有如果本身我总共的PAGE只有一页怎么办?你设个2有什么用?

这里是我写错了,之前我在这里做了调试,没改回来。pageIndex改为AspNetPager1.CurrentPageIndex --------------------编程问答-------------------- 你可以每次点下一页在AspnetPageing事件里重新绑定,这句加个判断
if(Session["flag"]==null)
{
   pageindex=1;
Session["flag"]=1;
}
else
  pageindex=AspNetPager1.CurrentPageIndex;

--------------------编程问答--------------------
引用 11 楼 viewstates 的回复:
你父页面SUBMIT一次也可以保持在同一页面啊。

请教,可以给点代码吗?怎么在原来的页数下刷新 --------------------编程问答-------------------- aspnetpage有个bug就是如果走Url方式,就每次都会经过Page_load,所有每次都PostBack=false
--------------------编程问答--------------------
引用 10 楼 huyou1983218 的回复:
我明白了,你PageIndex每次点第n页后,页面刷新,PageIndex都初始化了=1

我在函数里,把pageIndex赋值给AspNetPager1.CurrentPageIndex之后,pageIndex就没用了,只是充当一个零时变量。之前是我写错了,不好意思 --------------------编程问答--------------------
引用 13 楼 huyou1983218 的回复:
你可以每次点下一页在AspnetPageing事件里重新绑定,这句加个判断
if(Session["flag"]==null)
{
  pageindex=1;
Session["flag"]=1;
}
else
  pageindex=AspNetPager1.CurrentPageIndex;


这段代码意义是做什么,请指教 --------------------编程问答-------------------- 但问题是每次都走PageLoad里,pageindex初始值如果为1的化,每次走到绑定数据方法里,AspNetPager1.CurrentPageIndex都=1了 --------------------编程问答--------------------
引用 17 楼 lifeiwen 的回复:
引用 13 楼 huyou1983218 的回复:
你可以每次点下一页在AspnetPageing事件里重新绑定,这句加个判断
if(Session["flag"]==null)
{
  pageindex=1;
Session["flag"]=1;
}
else
  pageindex=AspNetPager1.CurrentPageIndex;




这段代码意义是做什么,请指教

方式刷新pageindex --------------------编程问答-------------------- 防止刷新Pageindex --------------------编程问答--------------------
window.opener.refresh();


parent page:
function refresh()
{
 document.getElementById('<%=hidValue.ClientID%>')='refresh';
 document.forms[0].submit();
}

cs
if(!Page.isPostBack)
{
 //...
}
else
{
 if(hidValue.Value=="refresh")
 {
 BindData();
hidValue.Value="";
}
} --------------------编程问答--------------------
引用 18 楼 huyou1983218 的回复:
但问题是每次都走PageLoad里,pageindex初始值如果为1的化,每次走到绑定数据方法里,AspNetPager1.CurrentPageIndex都=1了

在PageLoad里面,我没用到pageindex这个变量,我是通过别的页面传过来的值,然后直接调用BindGridView()这个函数的,主要问题就是在BindGridView()里AspNetPager1.CurrentPageIndex
赋非“1”值之后还是为1,我郁闷啊。 --------------------编程问答--------------------
引用 21 楼 viewstates 的回复:
window.opener.refresh();


parent page:
function refresh()
{
document.getElementById(' <%=hidValue.ClientID%>')='refresh';
document.forms[0].submit();
}

cs
if(!Page.isPostBack)
{
//...
}
else
{
if(hidValue.Value=="refresh")
{
BindData();
hidValue.Value="";
}
}

不太看得懂,可以给点注释嘛? --------------------编程问答-------------------- page_load里面我是这样写的

protected void Page_Load(object sender, EventArgs e)
    {
        
        if (!IsPostBack)
        {
            if (Session["pageIndex"] == null)
            {
                BindGridView(1);
             }
            if(Session["pageIndex"]!=null)
            {
                string pageIndex = Session["pageIndex"].ToString();
                int index = Int32.Parse(pageIndex);   
                BindGridView(index);
                Session.Remove("pageIndex");
            }
        }
    }
--------------------编程问答--------------------
引用 23 楼 lifeiwen 的回复:
引用 21 楼 viewstates 的回复:
window.opener.refresh();
//弹出页面最后关闭前调用下这个(JS)

parent page:
function refresh()
{
document.getElementById(' <%=hidValue.ClientID%>')='refresh';
document.forms[0].submit();
}
//父页面对应的JS的函数,其中HIDVALUE这个是个隐藏控件,记录是不是需要刷新,之后在将页面提交
cs
if(!Page.isPostBack)
{
//...
}
else
{
//在JS提交页面后会到这里来,由于在JS中设定了HIDVALUE的值,你这边判断是不是这个值,如果是就重新绑定下,此时由于页面没有跳转,控件的各项值会从VIEWSTATES中恢复,包括你的PAGEINDEX,所以这里你就直接根据CURRENTPAGEINDEX来进行绑定数据即可
if(hidValue.Value=="refresh")
{
BindData();
//将这个HIDVALUE的值清空
hidValue.Value="";
}
}

不太看得懂,可以给点注释嘛?
--------------------编程问答-------------------- 各位,我解决了,需要先给AspNetPager1.RecordCount赋值,才能给AspNetPager1.CurrentPageIndex赋值,不知道这算不算一个bug。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,