2

すべての顧客を一覧表示するグリッド ビューがあります。

MDIの子に配置するフォームのロード時にバインドしています。

グリッド ビューの列は、設計時に事前定義されています。

Form_Load()イベントの私のコードは次のとおりです。

try
{
       cn = db.createConnection();
       if (cn.State == System.Data.ConnectionState.Open)
       {
           cn.Close();
       }
       cn.Open();
       cmd = new OleDbCommand("Select BillNo,PartyName,City,State,FORMAT(BillDt,'dd-mm-yyyy') as BillDt from BillMaster", cn);
       da = new OleDbDataAdapter(cmd);
       ds = new DataSet();
       da.Fill(ds);
       cn.Close();

       dataGridView1.AutoGenerateColumns = false;
       dataGridView1.DataSource = ds.Tables[0];
       for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
       {
            dataGridView1.Rows[i].Cells[0].Value = ds.Tables[0].Rows[i]["BillNo"].ToString();
            dataGridView1.Rows[i].Cells[1].Value = ds.Tables[0].Rows[i]["PartyName"].ToString();
            dataGridView1.Rows[i].Cells[2].Value = ds.Tables[0].Rows[i]["City"].ToString();
            dataGridView1.Rows[i].Cells[3].Value = ds.Tables[0].Rows[i]["State"].ToString();
            dataGridView1.Rows[i].Cells[4].Value = ds.Tables[0].Rows[i]["BillDt"].ToString();
        }

   }
   catch (Exception ex)
   {
        MessageBox.Show(ex.Message.ToString());
   }
   finally
   {
       cn.Close();
       da.Dispose();
       ds.Dispose();
       cmd.Dispose();
   }

}

ブレークポイントを置いてプログラムの実行を確認しました。データは、DataSet およびイミディエイト ウィンドウのデータベースとまったく同じようにフェッチされます。グリッドの特定のセルの値は正確な値を示しますが、問題は、フォームが読み込まれたときにグリッドが空のままであることです。データベースからフェッチした行数と同じ数の空白行を作成します。

このエラーに対処するにはどうすればよいですか。

助けてください。

4

3 に答える 3

0
try
{
   cn = db.createConnection();
   if (cn.State == System.Data.ConnectionState.Open)
   {
       cn.Close();
   }
   cn.Open();
   cmd = new OleDbCommand("Select BillNo,PartyName,City,State,FORMAT(BillDt,'dd-mm-yyyy') as BillDt from BillMaster", cn);
   da = new OleDbDataAdapter(cmd);
   ds = new DataSet();
   da.Fill(ds);
   cn.Close();

   dataGridView1.AutoGenerateColumns = true;
   dataGridView1.DataSource = ds.Tables[0];

   //Or you can use
   //dataGridView1.DataSource = ds.Tables[0].DefaultView;    


   }
   catch (Exception ex)
   {
    MessageBox.Show(ex.Message.ToString());
   }
   finally
   {
   cn.Close();
   da.Dispose();
   ds.Dispose();
   cmd.Dispose();
  }

  }

それがあなたを助けることを願っています

于 2013-05-09T06:16:49.040 に答える