我在DetailsView控件,在编辑其FooterTemplate项时,拖放了上一页,下一页两个连接按钮,想要实现其分页功能,DataBound事件部分代码如下:   protected void Edit_DataBound(object sender, EventArgs e)
        {
            ////取得显示数据的那一行
            DetailsViewRow pagerRow = this.DetailsView1.BottomPagerRow;
            ////取得上一页,下一页的链接按钮
            LinkButton linkPrevBtn = (LinkButton)pagerRow.Cells[0].FindControl("linkPrevBtn");
            LinkButton linkNextBtn = (LinkButton)pagerRow.Cells[0].FindControl("linkNextBtn");
            //设置何时禁用上一页下一页
            if (this.DetailsView1.PageIndex == 0)
            {[code=C#]
                linkPrevBtn.Enabled = false;
            }
            if (this.DetailsView1.PageIndex == this.DetailsView1.PageCount-1)
            {
                linkNextBtn.Enabled = false;
            }
            else if (this.DetailsView1.PageCount <= 0)
            {
                //linkPrecBtn.Enabled = false;
                linkNextBtn.Enabled = false;
            }
[/code]
       <asp:LinkButton ID="linkPrevBtn" runat="server" Font-Bold="True" ForeColor="#CCCCCC"      CommandArgument="Prev" CommandName="Page">上一页</asp:LinkButton>
           
<asp:LinkButton ID="linkNextBtn" runat="server" Font-Bold="True" 
         ForeColor="#CCCCCC" CommandArgument="Next" CommandName="Page" >下一页</asp:LinkButton>
可是运行的时候一直报错 “未将对象引用设置到对象的实例。”
求教这是为什么?我该怎样做,才能实现分页功能?

解决方案 »

  1.   

    ⊙﹏⊙b汗,代码重新贴一次
    后台       protected void Edit_DataBound(object sender, EventArgs e)
            {
                ////取得显示数据的那一行
                DetailsViewRow pagerRow = this.DetailsView1.BottomPagerRow;
                ////取得上一页,下一页的链接按钮
                LinkButton linkPrevBtn = (LinkButton)pagerRow.Cells[0].FindControl("linkPrevBtn");
                LinkButton linkNextBtn = (LinkButton)pagerRow.Cells[0].FindControl("linkNextBtn");
                //设置何时禁用上一页下一页
                if (this.DetailsView1.PageIndex == 0)
                {
                    linkPrevBtn.Enabled = false;
                }
                if (this.DetailsView1.PageIndex == this.DetailsView1.PageCount-1)
                {
                    linkNextBtn.Enabled = false;
                }
                else if (this.DetailsView1.PageCount <= 0)
                {
                    //linkPrecBtn.Enabled = false;
                    linkNextBtn.Enabled = false;
                }前台<asp:LinkButton ID="linkPrevBtn" runat="server" Font-Bold="True" 
                        ForeColor="#CCCCCC" CommandArgument="Prev" CommandName="Page">上一页</asp:LinkButton>
                 <asp:LinkButton ID="linkNextBtn" runat="server" Font-Bold="True" 
                        ForeColor="#CCCCCC" CommandArgument="Next" CommandName="Page" >下一页</asp:LinkButton>
      

  2.   

       LinkButton linkPrevBtn = (LinkButton)pagerRow.Cells[0].FindControl("linkPrevBtn");
    这一句就开始错了
      

  3.   


    protected void DetailsView1_DataBound(object sender, EventArgs e)
            {
               DetailsView dv= (DetailsView)sender;
               Label lbl= DetailsView.FindControl("Label1") as Label;
            }
    http://msdn.microsoft.com/zh-cn/library/ms227992.aspx
      

  4.   

    可以在Detailview的属性中直接设置,首先设置allowpaging为true,通过pagersetting属性集设置,例如pagebuttoncount可以设置显示的页数
      

  5.   

    一般上一页,下一页应放在<PagerTemplate></PagerTemplate>中,
    一定要放在<FooterTemplate></FooterTemplate>中,获取该控件的代码是:
    LinkButton linkPrevBtn = (LinkButton)DetailsView1.FooterRow.FindControl("linkPrevBtn");
      

  6.   

    恩,是放在FooterTemplate里面的,但是就是错了
      

  7.   

    这样取是不会错的!
    LinkButton linkPrevBtn = (LinkButton)DetailsView1.FooterRow.FindControl("linkPrevBtn");
      

  8.   

    耶,看错了,真的可以运行了,(*^__^*) 嘻嘻……
    可是我写的好像也没错啊,这是为什么呢?去看看MSDN好了,自己找答案去,O(∩_∩)O~封贴