为什么来自 class 的存储过程数据不显示在我的表单的 Datagridview 中

Why Stored Procedure Data from a class doesn't display in Datagridview on my form

我正在尝试将此代码转移到 class 以避免表单/用户控件中的代码混乱。当代码在我的表单/用户控件中时,我在我的 datagridview 中成功显示了数据存储过程,但是当我尝试 class 它不再起作用时。这是我在 class:

中使用的代码

我的class:

public class DisplayCustomer
{
    public void Display_Customer(DataTable dt, DataGridView dgv)
    {     
        using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["SalesInventoryManagement.Properties.Settings.Setting"].ConnectionString))
        {
            using (var cmd = new SqlCommand("usp_GetCustomer", con))
            {               
                con.Open();
                cmd.CommandType = CommandType.StoredProcedure;

                using (var sda = new SqlDataAdapter(cmd))
                {                        
                    dt = new DataTable();
                    sda.Fill(dt);
              //    dt.Load(cmd.ExecuteReader());
                    dgv = new DataGridView { DataSource = dt };                
                }

                con.Close();
            }
        }
    }
}

我的用户控件:

public partial class ManageCustomer : UserControl
{
    public ManageCustomer()
    {
        InitializeComponent();
    }

    public DataTable dbdataset;

    private void ManageCustomer_Load(object sender, EventArgs e)
    {
        DisplayCustomer dc = new DisplayCustomer();
        dc.Display_Customer(dbdataset, CustomersList);
    }
}

我觉得有两个问题,

  1. 使用现有的 Datagridview,而不是创建新的。

    dgv = new DataGridView { DataSource = dt };

尝试做:

dgv.DataSource = dt;
  1. 此外,如果您的 Datagridview 位于 UserControl,请将其作为

  2. 传递

ref

Display_Customer(DataTable dt, ref DataGridView dgv)

所以,当你调用它时

dc.Display_Customer(dbdataset, ref CustomersList);

如果这没有帮助,请告诉我。我还在去办公室的路上......所以,没有测试代码。 :) 试试看并更新我