创建一个列表,作为gridview的参数

时间:2017-01-09 22:35:06

标签: c# winforms datagridview

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

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

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

listview的代码,起初我只想选择。稍后以某种方式将选择参数写入一个变量,我可以将其用作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;
        }
    }
  }
}

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

1 个答案:

答案 0 :(得分:0)

为什么Grid没有显示任何数据的问题是您尝试将SqlDataReader绑定到它。这不起作用,因为Grid不支持DataSource。

您需要的是DataSource DataTable, IList<T>, IBindingList<T>。在您的情况下,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-block,则不需要手动关闭连接。在使用块结束时,它会自动关闭/处理。