2017-01-09 4 views
0

私は学校の開発プロジェクトに取り組んでいます。私は開発がとても新しいです。私はオンラインで読んでいますが、私が探している答えを見つけることができません。gridviewのインパラメータとして動作するリストを作成する

これまでWindowsフォームアプリケーションでリストボックスを作成していましたが、これは自分の列のすべての値を選択したいので、パラメータに基づいてdataGridViewにデータを表示するためのインパラメータとして機能するはずです。

私は自分のプロジェクトの70%を作成しましたが、この機能は残されています。私のデータベースはAzureにあり、私はそれを書いて新しい行を追加することができますが、私はそれを実行するときに私のアプリケーションに何も読み取ることができません。

リストビューのコードは、最初は選択したいだけです。後で、何らかの方法で、選択されたパラメータをdataGridViewの条件として使用できる変数に書き込みます。

これは私のグリッドビューのコードです。これまでのところ、すべてのデータを表示したいだけですが、何も表示されません。

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; 
     } 
    } 
    } 
} 

私の接続文字列が動作しているので、既に持っているテーブルにデータを挿入できます。

答えて

0

グリッドに何もデータが表示されないという問題は、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#で大文字で書かれています。使用ブロックを使用する場合は、手動で接続を閉じる必要はありません。使用ブロックの終わりでは、自動的に閉鎖/廃棄されます。

+0

ありがとうございます。しかし、残念ながらそれはまだ動作していません。私はなぜ、私のDataGridがちょうど空であるか分からない。 –

+0

@StephenSmith dt.Load(dr)の後にブレークポイントを設定してください。いくつかのエントリがあるかどうか確認してください。 – Sebi

+0

コードは問題のようなブレークポイントには決して実行されません。/ –

関連する問題