2017-01-27 1 views
1

私はこれが奇妙な質問であることを知っていますが、なぜ私のコードが私の望むことをしているのか分かりません。なぜdatagridviewのDataPropertyNameを設定すると、データソースを設定した後でもジョブを実行できますか?

これは私がここまでdatagridview

using (SqlConnection SqlCon = new SqlConnection(StrCon)) 
    { 
     SqlCon.Open(); 

     using (SqlCommand SqlCmd = new SqlCommand()) 
     { 
      SqlCmd.Connection = SqlCon; 
      SqlCmd.CommandType = CommandType.StoredProcedure; 

      SqlCmd.CommandText = "SelectWe..."; 

      SqlCmd.Parameters.Add("@HiveNumber", SqlDbType.Int).Value = ...; 
      SqlCmd.Parameters.Add("@RV", SqlDbType.Int).Direction = ...; 

      DataTable Dtable = new DataTable(); 

      Dtable.Load(SqlCmd.ExecuteReader()); 


      WeeklyRptdgv.Columns[0].DataPropertyName = "RecID"; 

      WeeklyRptdgv.Columns[2].DataPropertyName = "VisitDate"; 

      WeeklyRptdgv.Columns[3].Name = "QueenExists"; 
      WeeklyRptdgv.Columns[3].DataPropertyName = "QueenExists"; 

      WeeklyRptdgv.Columns[4].Name = "QueenVisited"; 
      WeeklyRptdgv.Columns[4].DataPropertyName = "QueenVisited"; 

      WeeklyRptdgv.Columns[5].Name = "QueenCellVisited"; 
      WeeklyRptdgv.Columns[5].DataPropertyName = "QueenCellVisited"; 

      WeeklyRptdgv.Columns[6].DataPropertyName = "HoneyStatus"; 

      WeeklyRptdgv.Columns[7].DataPropertyName = "EggLayingStatus"; 

      WeeklyRptdgv.DataSource = Dtable; 

に私のデータを入れてどのようにそれは大丈夫だが、3,4,5の列数はブール値であり、私は/真実ではないCheckBoxに表示し、それらをしたいです偽です。そう

私は、データソースを設定した後、次の操作を行います。

using (SqlConnection SqlCon = new SqlConnection(StrCon)) 
    { 
     SqlCon.Open(); 

     using (SqlCommand SqlCmd = new SqlCommand()) 
     { 
      ... 

      WeeklyRptdgv.DataSource = Dtable; 

      WeeklyRptdgv.Columns.Remove("QueenExists"); 
      DataGridViewCheckBoxColumn QueenExists = new DataGridViewCheckBoxColumn(); 
      QueenExists.Name = "QueenExists"; 
      QueenExists.DataPropertyName = "QueenExists"; 
      WeeklyRptdgv.Columns.Insert(3, QueenExists); 

      WeeklyRptdgv.Columns.Remove("QueenVisited"); 
      DataGridViewCheckBoxColumn QueenVisited = new DataGridViewCheckBoxColumn(); 
      QueenVisited.Name = "QueenVisited"; 
      QueenVisited.DataPropertyName = "QueenVisited"; 
      WeeklyRptdgv.Columns.Insert(4, QueenVisited); 

      WeeklyRptdgv.Columns.Remove("QueenCellVisited"); 
      DataGridViewCheckBoxColumn QueenCellVisited = new DataGridViewCheckBoxColumn(); 
      QueenCellVisited.Name = "QueenCellVisited"; 
      QueenCellVisited.DataPropertyName = "QueenCellVisited"; 
      WeeklyRptdgv.Columns.Insert(5, QueenCellVisited); 

      } 
     } 

このコードは、私がやりたいが、私はオリジナルのものを除去した後の列がその値を取得する方法を見つけるカント

または多分これ解決策は間違っており、私はそれを認識していません。

+0

aspxページでDataGridviewを宣言した方法を共有できますか? AutoGenerateColumnをtrueまたはfalseに設定していますか? –

+0

@ChetanRanpariya私はコード – SaraniO

+0

でfalseに設定します。その後、チェックボックスの列と他の列をaspxにのみ追加し、そこにDataPropertyNameを設定する必要があります。 IN datagridviewのデータソースのみのコードを設定する必要があります。 –

答えて

2

デザイン時にdatagridviewに列を追加する方法を十分に理解していると確信しています。

あなたがデザイン時にDataGridViewの中で適切に列を追加したら、保留されている唯一のものが設定されているなど、あなたがそのようなDataGridViewTextBoxColumn、DataGridViewCheckBoxColumnとして適切な列タイプを選択する必要があり、設計時に

をDataGridViewButtonColumnを列を追加する際にすべての列のDataPropertyNameを設定し、DataGridViewのDataSourceを設定します。

デザイン時に列を追加するときに、チェックボックス列のColumnTypeが正しく選択されていることを除いて、これらの作業はすべて実行されます。 enter image description here

関連する問題