2017-07-17 13 views
0

いずれかお手伝いください。私はDataGridViewの最初の列にチェックボックスがあるc#windowsアプリケーションを開発しました。最初の列ヘッダーをクリックすると、最初の行を除くすべての行レベルチェックボックスが選択されます。すべての行レベルのチェックボックスを選択するために私はdataGridView1_ColumnHeaderMouseClickのイベントがあり、コードは次のとおりです。
DataGridView C#windowsアプリケーション(最初の行は、マウスが列ヘッダーをクリックするとチェックボックスが選択されません)

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
     { 
      foreach (DataGridViewColumn column in dataGridView1.Columns) 
      { 
       column.SortMode = DataGridViewColumnSortMode.NotSortable; 
      } 
      if (e.ColumnIndex == 0) 
      { 
       if (chek == 0) 
       { 
        try 
        { 
         for (int i = 0; i < dataGridView1.RowCount; i++) 
         { 
          string paymentValue = dataGridView1.Rows[i].Cells[18].Value.ToString(); 
          string incmngp = dataGridView1.Rows[i].Cells[20].Value.ToString(); 
          if (paymentValue == "N" && incmngp =="") 
          { 
           dataGridView1.Rows[i].Cells[0].Value = 1; 
           chek = 1; 
          } 
         } 
         if (chek == 1) 
         { 
          btn_update.Text = "Update"; 
         } 
        } 
        catch (Exception) { } 
       } 
       else if(chek==1) 
       { 
        try 
        { 
         for (int i = 0; i < dataGridView1.RowCount; i++) 
         { 
          dataGridView1.Rows[i].Cells[0].Value = 0; 
          chek = 0; 
         } 
         if (chek == 0) 
         { 
          btn_update.Text = "OK"; 
         } 
        } 
        catch (Exception) { } 
       } 
      } 

注:CHEKは

+1

はい...わかりました....あなたの問題は? –

+0

@SurjS列ヘッダーをクリックすると、最初の行が選択されません。しかし行の2番目から最後まで、すべてのチェックボックスは最初の行ではなく選択されています。 –

+0

@SurajSこれに対して解決策を提供してください。あなたが与えたようなコードを修正した後、最初の行を選択しない。 http://i.imgur.com/WihxVvK.png –

答えて

0

は、データグリッドのあなたの選択モードプロパティを設定し、初期化ステージに宣言された変数でありますColumnHeaderSelect

enter image description here

とMAKを視野にE確認のようなことをすべてあなたの 'テキスト' の列は、私が今までに前に話した元に戻すすべて、その場合NotSortable

enter image description here

UPDATE 2

SortModeセットを持ってみませんかこの

DataGridView1に任意のDataTableを割り当てる前に。

da.Fill(dt); 
dataGridView1.DataSource = dt.DefaultView; 
dataGridView1.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect; 
    foreach(DataGridViewColumn dc in dataGridView1.Columns) 
       { 
        dc.SortMode = DataGridViewColumnSortMode.NotSortable; 
       } 
dataGridView1.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect; 

UPDATE 3

以下

enter image description here

のようなあなたのdataGridView1のColumnHeaderMouseClickイベント のイベントハンドラを追加し、使用したい場合は、以下のコード(一般的なコードを追加します。チェックボックスの任意の列に対して同じ機能)

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
     { 
      //Enter your own column index here 
      if(e.ColumnIndex == 0) 
      foreach(DataGridViewRow row in dataGridView1.Rows) 
      foreach (DataGridViewCell cell in row.Cells) 
      { 
        //Check if the cell type is of a CheckBoxCell 
       if (cell.GetType() == typeof(DataGridViewCheckBoxCell)) 
       { 
        DataGridViewCheckBoxCell c = (DataGridViewCheckBoxCell)cell; 
        c.TrueValue = "T"; 
        c.FalseValue = "F"; 
        if (c.Value == c.FalseValue|| c.Value == null) 
        c.Value = c.TrueValue; 
        else 
         c.Value = c.FalseValue; 
       } 
      } 
      dataGridView1.RefreshEdit(); 
     } 
+0

助けてくれてありがとう。上記の選択モードについても同様ですか? ** DataGridViewコントロールのSelectionModeがColumnHeaderSelect **に設定されている間、** ColumnのSortModeをAutomaticに設定することはできません。 –

+0

@ Naveen.A更新された回答 –

+0

この問題にお返事いただきありがとうございます。列ヘッダーをクリックすると、この最初の行には運がありません。参照用の画像http://i.imgur.com/WihxVvK.png –

関連する問題