【问题标题】:Object reference not set to an instance of an object datatable对象引用未设置为对象数据表的实例
【发布时间】:2012-06-06 08:55:27
【问题描述】:

即使我的列表不为空,我也没有将对象引用设置为对象的实例

  protected void gridview_bind()
{
    try
    {
        CompanyMasterClass co = new CompanyMasterClass();
        co.strcompany_code = Request.Cookies["userinfo"]["companycode"].ToString();
        ResultClass objress = co.fn_GetNameNumberStyle();
        if (objress.bStatus)
        {
            eslist<CompanyMasterClass> OBJLISTS = objress.objData as eslist<CompanyMasterClass>;

            if (OBJLISTS.Count > 0)
            {
                if (OBJLISTS[0].strdatestyle.ToString() == "DM")
                {
                    mskextCreatedOn.Mask = "99/99/9999";
                    mskextCreatedOn.CultureName = "en-GB";
                    //mskextCreatedOn.UserDateFormat="DayMonthYear";
                    mskextUpdatedOn.Mask = "99/99/9999";
                    mskextUpdatedOn.CultureName = "en-GB";
                }
                if (OBJLISTS[0].strdatestyle.ToString() == "MD")
                {
                    mskextCreatedOn.Mask = "99/99/9999";
                    mskextCreatedOn.CultureName = "en-US";
                    //mskextCreatedOn.UserDateFormat="DayMonthYear";
                    mskextUpdatedOn.Mask = "99/99/9999";
                    mskextUpdatedOn.CultureName = "en-US";
                }
            }
        }
        //mm.getlookup(ddlUserType, "user_type", "s");
        CustomerMasterClass cs = new CustomerMasterClass();

        ResultClass objres = cs.fn_GetCustomerMasterGrid();
        if (objres.bStatus)
        {
            eslist<CustomerMasterClass> OBJLIST = objres.objData as eslist<CustomerMasterClass>;
            if (OBJLIST.Count > 0)
            {
                if ((bool)ViewState["filter"] == true)
                {
                    DataTable dts = (DataTable)ViewState["searchtable"];
                    pds.DataSource = dts.DefaultView;
                    pds.AllowPaging = true;
                    pds.PageSize = Convert.ToInt16(ddlPerPage.SelectedValue);
                    //pds.PageSize = 5;
                    DataView dvs = dts.DefaultView;

                    if (this.ViewState["SortExp"] != null)
                    {
                        dvs.Sort = this.ViewState["SortExp"].ToString()
                                 + " " + this.ViewState["SortOrder"].ToString();
                    }
                    pds.CurrentPageIndex = CurrentPage;
                    lnkbtnNext.Enabled = !pds.IsLastPage;
                    lnkbtnPrevious.Enabled = !pds.IsFirstPage;
                    if (pds.IsLastPage)
                    {
                        //lnkbtnNext.Style.Add("color", "#CCCCCC");
                        lnkbtnNext.Style.Add("background-color", "#CCCCCC");
                        lnkbtnNext.Style.Add("border-width", "0px");
                    }
                    else
                    {
                        //lnkbtnNext.Style.Remove("color");
                        lnkbtnNext.Style.Remove("background-color");
                        lnkbtnNext.Style.Remove("border-width");
                    }
                    if (pds.IsFirstPage)
                    {
                        //lnkbtnPrevious.Style.Add("color", "#CCCCCC");
                        lnkbtnPrevious.Style.Add("background-color", "#CCCCCC");
                        lnkbtnPrevious.Style.Add("border-width", "0px");
                    }
                    else
                    {
                        //lnkbtnPrevious.Style.Remove("color");
                        lnkbtnPrevious.Style.Remove("background-color");
                        lnkbtnPrevious.Style.Remove("border-width");
                    }
                    gvCustomerMaster.DataSource = pds;
                    gvCustomerMaster.DataBind();
                    doPaging();
                    // gvGroupMaster.DataSource = OBJLIST;
                    //gvGroupMaster.DataBind();
                    gridmain.Visible = true;
                    //frmvwGroup.Visible = false;
                    lblTotalRecords.Text = dts.Rows.Count.ToString();

                }
                else
                {
                        DataTable dt = (DataTable)OBJLIST;
                        //dt = OBJLIST.ToString();
                        ViewState["nosearch"] = dt;
                        pds.DataSource = dt.DefaultView;
                        pds.AllowPaging = true;
                        pds.PageSize = Convert.ToInt16(ddlPerPage.SelectedValue);
                        //pds.PageSize = 5;
                        DataView dv = dt.DefaultView;

                        if (this.ViewState["SortExp"] != null)
                        {
                            dv.Sort = this.ViewState["SortExp"].ToString()
                                     + " " + this.ViewState["SortOrder"].ToString();
                        }
                        pds.CurrentPageIndex = CurrentPage;
                        lnkbtnNext.Enabled = !pds.IsLastPage;
                        lnkbtnPrevious.Enabled = !pds.IsFirstPage;
                        if (pds.IsLastPage)
                        {
                            //lnkbtnNext.Style.Add("color", "#CCCCCC");
                            lnkbtnNext.Style.Add("background-color", "#CCCCCC");
                            lnkbtnNext.Style.Add("border-width", "0px");
                        }
                        else
                        {
                            //lnkbtnNext.Style.Remove("color");
                            lnkbtnNext.Style.Remove("background-color");
                            lnkbtnNext.Style.Remove("border-width");
                        }
                        if (pds.IsFirstPage)
                        {
                            //lnkbtnPrevious.Style.Add("color", "#CCCCCC");
                            lnkbtnPrevious.Style.Add("background-color", "#CCCCCC");
                            lnkbtnPrevious.Style.Add("border-width", "0px");
                        }
                        else
                        {
                            //lnkbtnPrevious.Style.Remove("color");
                            lnkbtnPrevious.Style.Remove("background-color");
                            lnkbtnPrevious.Style.Remove("border-width");
                        }
                        gvCustomerMaster.DataSource = pds;
                        gvCustomerMaster.DataBind();
                        doPaging();
                        // gvGroupMaster.DataSource = OBJLIST;
                        //gvGroupMaster.DataBind();
                        gridmain.Visible = true;
                        //frmvwGroup.Visible = false;
                        lblTotalRecords.Text = OBJLIST.Count.ToString();
                        //this.GetUsersPageWise(1);

                }
            }
        }
    }
    catch (Exception ex)
    {
        ErrorLogClass ObjError = new ErrorLogClass("customer_master.aspx", "customer_master()", ex);
    }
}

我在 DataTable dt = (DataTable)OBJLIST;在 else 子句中。

有什么想法或建议吗?

谢谢,

【问题讨论】:

  • 什么是eslist&lt;CustomerMasterClass&gt;,为什么你认为它可以转换为DataTable
  • eslist 是函数的记录列表。我需要 DataTable 进行分页。 pds 是分页数据源。
  • 如有任何建议或想法,请紧急
  • 你还没有回答我的问题(什么是“函数的记录列表”?)。 eslistCustomerMasterClass 是什么类型,它们从什么继承?您需要DataTable也无关紧要,为什么您假设可以将列表强制转换为DataTable? ((DataTable)OBJLIST)
  • eslist 是列表。 CustomerMasterClass 是我的 BLL 我正在创建我的类的一个对象并在我的 DLL 中调用该函数

标签: asp.net c#-4.0


【解决方案1】:

数据有问题。一些值为空的值。通过为数据变量分配默认值来解决。

【讨论】:

    【解决方案2】:

    您不能像这样将列表转换为数据表。 要么使用

    static DataTable ConvertListToDataTable(eslist<CompanyMasterClass> list)
    {
        // New table.
        DataTable table = new DataTable();
    
        // Get max columns.
        int columns = 0;
        foreach (var array in list)
        {
        if (array.Length > columns)
        {
            columns = array.Length;
        }
        }
    
        // Add columns.
        for (int i = 0; i < columns; i++)
        {
        table.Columns.Add();
        }
    
        // Add rows.
        foreach (var array in list)
        {
        table.Rows.Add(array);
        }
    
        return table;
    }
    

    或参考以下链接 http://www.codeproject.com/Articles/83271/Convert-a-Generic-List-to-a-Datatable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多