简体   繁体   English

使用SPGridViewPager时,对象引用未设置为对象的实例

[英]Object reference not set to an instance of an object when using SPGridViewPager

It's my first sharepoint project and eveything looks very confusing. 这是我的第一个共享点项目,所有内容看起来都很混乱。

I need to have a SPGridView with paging. 我需要具有分页的SPGridView。

Here is an entire code of mx webpart: 这是mx webpart的完整代码:

using System;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace FirstSPGridView.VisualWebPart1
{
    [ToolboxItemAttribute(false)]
    public class VisualWebPart1 : WebPart
    {
        // Visual Studio might automatically update this path when you change the Visual Web Part project item.
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/FirstSPGridView/SPGridViewWebPartTest/VisualWebPart1UserControl.ascx";

        SPGridView _grid;

        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            try
            {
                SPSite mySite = SPContext.Current.Site;
                SPWeb myWeb = mySite.OpenWeb();

                //Using RunWithElevatedPrivileges

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite siteCollection = new SPSite(mySite.ID))
                    {
                        using (SPWeb web = siteCollection.OpenWeb(myWeb.ID))
                        {
                            _grid = new SPGridView();
                            _grid.AutoGenerateColumns = false;


                            _grid.PageSize = 3;
                            _grid.AllowPaging = true;

                            _grid.DataSource = SelectData();


                            Controls.Add(_grid);

                            SPGridViewPager pager = new SPGridViewPager();
                            pager.GridViewId = _grid.ID;

                            this.Controls.Add(pager);

                        }
                    }
                });
            }
            catch (Exception ex)
            { }


        }

        protected sealed override void Render(HtmlTextWriter writer)
        {
            try
            {
                GenerateColumns();
                _grid.DataBind();
                base.Render(writer);
            }
            catch (Exception e)
            {
                throw new NotImplementedException();
            }
        }

        private void GenerateColumns()
        {
            BoundField clientNameColumn = new BoundField();
            clientNameColumn.HeaderText = "Client";
            clientNameColumn.DataField = "LastName";
            _grid.Columns.Add(clientNameColumn);

            BoundField birthDayColumn = new BoundField();
            birthDayColumn.HeaderText = "BirthDate";
            birthDayColumn.DataField = "BirthDate";

            _grid.Columns.Add(birthDayColumn);
        }


        public DataTable SelectData()
        {
            var dataGet = new DataTable();
            SPSecurity.RunWithElevatedPrivileges(delegate()
                                                     {
                                                         using (
                                                             var conn =
                                                                 new SqlConnection(
                                                                     "Data Source=localhost;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=True")
                                                             )
                                                         {
                                                             var adapter = new SqlDataAdapter();
                                                             adapter.SelectCommand =
                                                                 new SqlCommand("Select TOP 100 LastName,Birthdate FROM DimCustomer");
                                                             adapter.SelectCommand.Connection = conn;
                                                             conn.Open();

                                                             adapter.Fill(dataGet);

                                                         }
                                                     });
            return dataGet;


        }
    }
}

Everything was working (except paging until I added this code: 一切正常(除了分页,直到我添加以下代码:

SPGridViewPager pager = new SPGridViewPager();
                            pager.GridViewId = _grid.ID;

                            this.Controls.Add(pager);

After that I get an exception on the Render method here: 之后,我在这里的Render方法上遇到异常:

                base.Render(writer);

StackTrace is: StackTrace是:

   at System.Web.UI.Control.FindControl(String id, Int32 pathOffset)\r\n   at Microsoft.SharePoint.WebControls.Menu.FindControlByWalking(Control namingContainer, String id)\r\n   at Microsoft.SharePoint.WebControls.SPGridViewPager.get_GridViewControl()\r\n   at Microsoft.SharePoint.WebControls.SPGridViewPager.Render(HtmlTextWriter output)\r\n   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)\r\n   at System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)\r\n   at System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer)\r\n   at FirstSPGridView.VisualWebPart1.VisualWebPart1.Render(HtmlTextWriter writer)

How can I fix that error? 我该如何解决该错误?

You must just set ID for _grid. 您只需为_grid设置ID。 For example, _grid.ID = "_gridView"; 例如, _grid.ID = "_gridView";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 “激活功能”:对象引用未设置为对象的实例 - 'Activate Features': Object reference not set to an instance of an object 删除计时器作业时,它将引发错误“对象引用未设置为对象的实例” - When deleting timer job it throws error 'Object reference not set to an instance of an object' Silverlight添加到列表 <T> 抛出未设置为对象实例的对象引用 - Silverlight adding to List<T> throws Object reference not set to an instance of an object 从SP2010读取文件属性时,对象引用未设置为对象的实例 - Object reference not set to an instance of an object while reading file properties from SP2010 (SPFieldLookupValue)查找类型的splistitem引发未将对象引用设置为对象异常的实例 - (SPFieldLookupValue) splistitem of Lookup type throws Object reference not set to an instance of an object exception Sharepoint 2010:ADO.NET/WCF数据服务(listdata.svc)异常“对象引用未设置为对象的实例” - Sharepoint 2010: ADO.NET/WCF Data Services (listdata.svc) exception “Object reference not set to an instance of an object” 使用包含对自身的引用的OData对象创建表时的SQLite异常 - SQLite Exception when creating table using OData object containing reference to itself Lists.AddAttachment引发对象引用错误 - Lists.AddAttachment throws object reference error 如何冒充使用Silverlight客户端对象模型? - How to impersonate using silverlight client object model? 使用SharePoint客户端对象模型重命名文件? - Rename File Using SharePoint Client Object Model?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM