简体   繁体   中英

GridControl Master - Detail view with a stored procedure

My first stored procedure looks like this:

Use [Stock]
Go
Create Proc Get_Orders
AS
SELECT [Number_Order]
  ,[Date_Order]
  ,[FullName]
  ,[Location]
FROM [Order]

and my second stored procedure looks like this:

USE [Stock]
GO
ALTER Proc [dbo].[Get_Order_Res]
AS

SELECT i.Name_Item
  ,od.[ID_Order]
  ,od.[Project]
  ,od.[Length]
  ,od.[Width]
  ,od.[Quantity]
  ,od.[Weight]
  ,od.[Supplier]
  ,od.[GDS_Name]
  ,od.[GDS_Date]
  ,od.[WorkshopName]
  ,od.[WorkshopDate]
  ,od.[ReservedQty]
 FROM OdredDetails od
   INNER JOIN ItemQuantity iq 
           ON iq.ID_ItemQte = od.ID_ItemQte 
   INNER JOIN item i
           ON i.ID_Item = iq.ID_Item 
   INNER JOIN [Order] ord
           ON ord.Number_Order=od.ID_Order
 where ord.[Location]='PRODUCTION'

in my c# code, I use this code to get data from a stored procedure

        public DataTable Get_Order_Res()
    {
        DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
        DataTable dt = new DataTable();
        dt = DAL.SelectData("Get_Order_Res", null);
        DAL.Close();
        return dt;

    }
    public DataTable Get_Orders()
    {
        DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
        DataTable dt = new DataTable();
        dt = DAL.SelectData("Get_Orders", null);
        DAL.Close();
        return dt;

    }

and in my form i use this code to create master detail view

    public partial class FRM_Reserved : Form
{
BL.CLS_Order ord = new BL.CLS_Order();
DataTable master = new DataTable();
DataTable details = new DataTable();
DataSet dataSet = new DataSet();
public FRM_Reserved()
 {
InitializeComponent();      
master = ord.Get_Orders();
details = ord.Get_Order_Res();
dataSet.Tables.Add(master);
dataSet.Tables.Add(details);
dataSet.Relations.Add("OderDetails",
dataSet.Tables["master"].Columns["Number_Order"],
dataSet.Tables["details"].Columns["ID_Order"]);
gridControl3.DataSource = dataSet.Tables["master"];

but when i run the code i get error:Object reference not set to an instance of an object. 图片 help me please,thanks in advance.

Since you havent given names to your data tables, hence when you are trying to access them then it returns null.

dataSet.Tables["master"] // this returns null

To fix this, give names to your data tables

DataTable master = new DataTable("master");
DataTable details = new DataTable("details");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM