Для объединения двух таблиц данных существует исключение нулевой ссылки - PullRequest
0 голосов
/ 07 июля 2019

Я собираюсь вызвать данные из DAL, отправить их в BLL, а я передам в XtraReport.Сценарий выглядит следующим образом: В DAL:

public static List<t_Products> GetAllProductList()
{
            try
            {
                return objContext.t_Products.OrderBy(c => c.f_ProName).ToList();
            }
......
}

в BLL:

public static List<t_Products> GetAllProductList()
{
           return DAL.DALProducts.GetAllProductList();
       }

в интерфейсе пользователя:

List<t_Products> ProductList = BLLProducts.GetAllProductList();
 var queryProduct=ProductList.Where(c => c.f_ProTypeID == 1)
                .Select(current=>new {current.f_ProductID,current.f_ProCode,current.f_P  roName,current.f_ProWeight,current.f_ProTypeID});
//create datatable from linq query
productDataTable =Utilities.IEnumerableToDataTable.LINQToDataTable(  queryProduct);

private void simpleButton1_Click(object sender, EventArgs e)
        {
            if (productDT.Rows.Count > 0)
            {
//sending datatable to Xtrareport
                Reports.XtraReports.ProductsAndBOM x = new Reports.XtraReports.ProductsAndBOM(productDT);
                x.Report();
            }
            else
....        }

Наконец, я вставил вXtraReport с именем ProductAndBOM, у меня есть набор данных с именем mahshamDataSet, в котором есть таблица данных с именем t_Product.Я поместил поля в этой таблице в отчет. Я поместил DataTable, отправленный в отчет, используя команду Merge в таблице данных t_Product:

public partial class ProductsAndBOM : DevExpress.XtraReports.UI.XtraReport
    {
        public ProductsAndBOM()
        {
            InitializeComponent();
        }
        System.Data.DataTable requiredRawMaterilSource;
        System.Data.DataTable productsSource;
        public ProductsAndBOM(System.Data.DataTable products)
        {
            productsSource = products;
        }
        new public void Report()
        {
            mahshamDataSet1.t_Products.Merge(productsSource);
            ProductsAndBOM productBOMXtraReport = new ProductsAndBOM();
            ReportPrintTool printTool = new ReportPrintTool(productBOMXtraReport);
            UserLookAndFeel lookAndFeel = new UserLookAndFeel(this);
            lookAndFeel.UseDefaultLookAndFeel = false;
            lookAndFeel.SkinName = "Office 2016 Colorful";
            printTool.ShowRibbonPreview(lookAndFeel);
        }
    }

К сожалению, когда я объединяю отправленную таблицу данныхв отчет с таблицей mahshamDataSet1.t_Products я получаю следующую ошибку: необработанное исключение типа 'System.NullReferenceException' произошло в Mahsham.UI.exe Дополнительная информация: ссылка на объект не установлена ​​для экземпляра объекта.

Спасибо, друзья.Проверьте коды.Посмотрите, что я должен сделать, чтобы избежать этой ошибки, и считаете ли вы, что этот процесс правильный?Благодарный

1 Ответ

0 голосов
/ 08 июля 2019

У меня проблемы:

public partial class ProductsAndBOM : DevExpress.XtraReports.UI.XtraReport
    {
        public ProductsAndBOM(System.Data.DataTable products)
        {
            InitializeComponent();
            productsSource = products;
        }
        //System.Data.DataTable requiredRawMaterilSource;
        System.Data.DataTable productsSource;

        public ProductsAndBOM()
        {

        }

        new public void Report()
        {
            //mahshamDataSet1 = new Data.MahshamDataSet();

           // ProductsAndBOM productBOMXtraReport = new ProductsAndBOM();
            mahshamDataSet1.t_Products.Merge(productsSource);
            ReportPrintTool printTool = new ReportPrintTool(this);
            UserLookAndFeel lookAndFeel = new UserLookAndFeel(this);
            lookAndFeel.UseDefaultLookAndFeel = false;
            lookAndFeel.SkinName = "Office 2016 Colorful";
            printTool.ShowRibbonPreview(lookAndFeel);
        }

    }

Перед любой инициализацией я пытался заполнить таблицу данных. Благодарный.

...