C# 创建用作gridview的inparameter的列表

C# 创建用作gridview的inparameter的列表,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在做一个学校发展项目,我对发展很陌生。我一直在网上阅读,但找不到我想要的答案 到目前为止,我已经在Windows窗体应用程序中创建了一个列表框,我想从其中一列中选择所有值,这些值应该作为inparameter,根据参数在dataGridView中显示数据 我已经创建了70%的项目,剩下的就是这个功能。我的数据库在Azure中,我可以写入它并添加新行,但在运行应用程序时我无法读取任何内容 listview的代码,首先我只想能够选择。稍后,以某种方式将choosen参数写入一个变量,我可以在da

我正在做一个学校发展项目,我对发展很陌生。我一直在网上阅读,但找不到我想要的答案

到目前为止,我已经在Windows窗体应用程序中创建了一个列表框,我想从其中一列中选择所有值,这些值应该作为inparameter,根据参数在dataGridView中显示数据

我已经创建了70%的项目,剩下的就是这个功能。我的数据库在Azure中,我可以写入它并添加新行,但在运行应用程序时我无法读取任何内容

listview的代码,首先我只想能够选择。稍后,以某种方式将choosen参数写入一个变量,我可以在dataGridView中将其用作条件

这是我的gridview的代码,到目前为止,我只想显示其中的所有数据,但它没有显示任何内容

namespace MyNamespace
{
public partial class CompanyForm : Form
{
    public CompanyForm()
    {
        InitializeComponent();
    }
    //Connection String
    string cs = ConfigurationManager.ConnectionStrings["ConnectionString"].
    ConnectionString;
    private void createCompany_Click_1(object sender, EventArgs e)
    {
        if (textBoxCompanyName.Text == "")
        {
            MessageBox.Show("Fill information");
            return;
        }
        using (SqlConnection con = new SqlConnection(cs))
        {
            //Create SqlConnection
            con.Open();
            SqlCommand cmd = new SqlCommand
            (
            "insert into dbo.Company  (companyName) 
            values(@companyName)", con);
            cmd.Parameters.AddWithValue
           (
            "@companyName",   
            textBoxCompanyName.Text);
            SqlDataAdapter adapt = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adapt.Fill(ds);
            MessageBox.Show("GJ");

        }
    }

    // The code that is not filling my datagrid
    private void dataEmployees_Load()
    {
        using (SqlConnection con = new SqlConnection(cs))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand
            (
                "Select fname,ename FROM dbo.Users", con
            );
            SqlDataReader dr = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(dr);
            dataEmployees.DataSource = dt;
        }
    }
  }
}

我的连接字符串正在工作,它已经能够将数据插入到我拥有的表中。

网格没有显示任何数据的问题是,您试图将SqlDataReader绑定到它。这不起作用,因为网格不支持将其作为数据源

作为数据源,您需要的是DataTable、IList、IBindingList。在您的情况下,DataTable将是最简单的解决方案。试试这个:

protected void DataEmployees()
{
  using (SqlConnection con = new SqlConnection(cs))
  {
     con.Open();
     SqlCommand cmd = new SqlCommand
     (
       "Select firstname,lastname FROM employees",con
      );
      SqlDataReader dr = cmd.ExecuteReader();
      DataTable dt = new DataTable();
      dt.Load(dr);
      dataEmployees.DataSource = dt;
   }
 }

请注意,方法是用大写字母C编写的。另外请注意,如果使用using块,则不需要手动关闭连接。在使用块结束时,它会自动关闭/释放。

谢谢您的回答。但不幸的是,它仍然不起作用。我不知道为什么,我的数据网格是空的。@StephenSmith请在dt.Loaddr之后设置一个断点;然后检查是否有一些条目。代码从未运行到断点,这似乎是问题所在:/@Stephen Smith然后你从未调用方法DataEmployees,或者你捕获了一个异常,在这种情况下什么都不做,你的sql不正确。是的,这似乎是问题所在,不知道为什么不调用它。我已经更新了上面的代码。首先,我正在为另一个表使用另一个SQL插入,并且连接字符串变量可以通过这种形式访问