简体   繁体   English

未将对象引用设置为对象的实例,WebControl返回了错误消息

[英]Object reference not set to an instance of an object, error message returned from a webcontrol

Please could someone give me an explanation. 请有人给我一个解释。 I have a webform which displays a table and paging. 我有一个显示表格和页面调度的网络表单。 Table and paging are performed by a web controller included in the web form. 表和分页由Web表单中包含的Web控制器执行。 When I pass the items from web form to web control everything is fine, but when I modify the values in web controll and try to bind them to the repeater I obtain the error. 当我将项目从Web表单传递到Web控件时,一切都很好,但是当我在Web Controll中修改值并尝试将它们绑定到转发器时,我得到了错误。

I have initialezed and the passed value is not null, I know it from debug. 我已经初始化并且传递的值不为null,我从debug知道它。

public class Table : System.Web.UI.UserControl, IPageableControl
{
    // PagedDataSource encapsulates the properties needed to enable paging for the control
    PagedDataSource page = new PagedDataSource();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            object o = Object;
            Session["o"] = o;
        }
    }

    public object Target
    {
        get { return m_ItemsRepeater.DataSource; }
        set
        {
            if (value == null)
                return;

            // display the table of items
            m_ItemsRepeater.DataSource = value;  // here I get the error after clicking
            m_ItemsRepeater.DataBind();
        }
    }

    // when I click on next or prev another controller is called which passes a value to Page
    public void Page(int i)
    {

        // if i == 1 go to next page if -1 to prev page
        if (i == 1)
            CurrentPage += CurrentPage;
        else
        {
            CurrentPage -= CurrentPage;                
        }

        SetPage();
    }

    public void SetPage()
    {
        object oo = (object)System.Web.HttpContext.Current.Session["o"];

        List<USER> u = (List<USER>)oo;

        // number of items per page
        int iPageSize = 5;
        // total items (=> total number of items)
        int total_number_items = u.Count;

        // current page ranges from 0 to max_number_pages-1
        int iTotalPages = (int)Math.Ceiling(((double)total_number_items) / iPageSize);

        // Indicate that the data should be paged              
        page.AllowPaging = true;
        // Set the number of items you wish to display per page
        page.PageSize = iPageSize;

        // number of already displayed items
        int index = CurrentPage * iPageSize;

        // select items to display in the current page. Check if out of range
        if (index + iPageSize < total_number_items)
            page.DataSource = u.GetRange(index, iPageSize).ToList();
        else
            page.DataSource = u.GetRange(index, total_number_items - index).ToList();

        // display items in the pages
        Target = page;

    }

    object s;
    public object Object
    {
        get { return s; }
        set { s = value; }
    }

    public int CurrentPage
    {
        get
        {
            object obj = this.ViewState["CurrentPage"];

            if (obj == null)
            {
                return 0;
            }
            else
            {
                return (int)obj;
            }
        }
        set
        {
            this.ViewState["CurrentPage"] = value;
        }
    }

}

// Web form

public class Items
{
    PagedDataSource page = new PagedDataSource();
    // number of items per page
    int iPageSize = 5;
    int total_number_items;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            // Load the items
            LoadItems();
        }
        else
        {
            // load session using paging from webcontrol
            List<USER> items = db.Get();
            m_Table.Object = items;
        }
    }

    /// <summary>
    /// Load items and display in table.
    /// </summary>
    private void LoadItems()
    {
        // get list items
        List<USER> items = db.Get();


        DataBind(items, CurrentPage);
    }

    /// <summary>
    /// Enable paging.
    /// </summary>
    private void DataBind(List<USER> items, int current_page)
    {
        // Indicate that the data should be paged
        page.AllowPaging = true;
        // Set the number of items you wish to display per page
        page.PageSize = iPageSize;

        // number of total pages
        int iTotalPages = ((items.Count + iPageSize - 1) / iPageSize);
        // number of already displayed items
        int index = CurrentPage * iPageSize;

        // select items to display in the current page. Check if out of range
        if (index + iPageSize < items.Count)
            page.DataSource = items.GetRange(index, iPageSize).ToList();
        else
            page.DataSource = items.GetRange(index, items.Count - index).ToList();

        // display items in the pages
        m_Table.Target = page;

    }

    // Called when cursor Previous is clicked.
    protected void lnkPrevious_Click(object sender, EventArgs e)
    {
        // Set viewstate variable to the previous page
        CurrentPage -= 1;
        LoadSupporters();
    }

    // Called when cursor Next is clicked.
    protected void lnkNext_Click(object sender, EventArgs e)
    {
        // Set viewstate variable to the next page
        CurrentPage += 1;
        LoadSupporters();
    }
    public int CurrentPage
    {
        get
        {
            object obj = this.ViewState["CurrentPage"];

            if (obj == null)
            {
                return 0;
            }
            else
            {
                return (int)obj;
            }
        }
        set
        {
            this.ViewState["CurrentPage"] = value;
        }
    }



}

check this object s is not assigned and change like this 检查是否未分配此object s并像这样更改

object s;
public object Object
{
    get { return s == null ? new object() : s; }
    set { s = value; }
}

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

相关问题 对象引用未设置为对象错误消息的实例 - Object reference not set to an instance of an object error message 对象引用的自定义消息未设置为对象的实例 - Custom message for Object reference not set to an instance of an object 对象引用未设置为实例错误 - Object reference not set to an instance error 错误:对象引用未设置为对象实例错误 - Error : Object Reference not set to an instance of an object error 从DataGrid读取时出现错误“对象引用未设置为对象的实例” - Error “Object Reference not set to an Instance of an object” on read from DataGrid 获取对象引用未设置为来自静态成员的对象错误的实例 - Get Object reference not set to an instance of an object error from static member 将值分配给数组时,它返回 Object 引用未设置为 object 的实例 - When assigning value into an Array it returned Object reference not set to an instance of an object 错误:NullReferenceException:未将对象引用设置为对象的实例 - ERROR: NullReferenceException: Object reference not set to an instance of an object 避免错误:对象引用未设置为对象的实例 - Avoid Error: Object reference not set to an instance of an object 对象引用未设置为对象错误的实例? - Object reference not set to an instance of an object error?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM