2012-02-13 10 views
1

DataGridviewに存在するセルの総数を取得する必要があります。これは、データのコピー/貼り付け時に列見出しのテキストを含めるかどうかを決定するために使用されます。すべてのレコードが選択されている場合にのみ表示されます。DataGridViewの総セル数

私は次のコードを使用して総セル数を取得していますが、この値を取得するにはより良い方法がありますか?

var totalCellCount = DataGridView2.ColumnCount * DataGridView2.RowCount; 

すべてのセルの数が含まれているプロパティが見つかりませんでした。細胞の数を取得するより良い方法はありますか?

私のdatagridviewはClipboardCopyModeEnableWithAutoHeaderTextに設定されていますが、グリッド内のすべての行/列を選択するとEnableAlwaysIncludeHeaderTextに設定します。だから私は以下のコードでは細胞の総数を使用しています:

private void DataGridView_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (m_RecordCount == 0) 
    return; 

     var totalCellCount = DataGridView2.ColumnCount * DataGridView2.RowCount; 

     if (DataGridView2.SelectedCells.Count == totalCellCount) 
     { 
      if (e.KeyChar == (char)3) 
      { 
      DataGridView2.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; 
      var clipboardContent = this.DataGridView2.GetClipboardContent(); 

      if (clipboardContent != null) 
      { 
       Clipboard.SetText(clipboardContent.GetText(TextDataFormat.Text)); 
      } 
      e.Handled = true; 
      } 
     } 
    } 

答えて

3

DataGrid.Itemsプロパティは、DataGrid内DataGridItemsを表すDataGridItemCollectionを返します。

DataGridItemは、レンダリングされたテーブル内の単一の行の代表です。また、DataGridItemは、番号を表すCellsプロパティを公開します。レンダリングされた表の表セル(言い換えれば、列)の数。あなたが他のカスタムシナリオを必要とする場合は、ここからは、あなたが行の合計数をしたい場合は、あなたがしたい場合も

  1. を試してみてください元の質問やコードに解決

    var rowCount = DataGridView2.Items.Count; //Number of Items...i.e. Rows; 
    
    // Get the no. of columns in the first row. 
    var colCount = DataGridView2.Items[0].Cells.Count; 
    

    をそれを追加するか必要があります例えば、複数のページを持っている場合は、実際の合計が必要です。もしそうなら、GridViewからその情報を見つけようとするのではなく、GridViewをバインドした基になるDataSourceを見てください。

例----

List<SomeObject> lis = GetYourData(); 
DataGrid.DataSource = list; 
DataGrid.DataBind(); 

// if you want to get the count for a specific page 
int currentPage = 2; 
int countForPage2 = (list.Count > currentPage * totalItemsPerPage)) ? 
    totalItemsPerPage : list.Count - ((currentPage - 1) * totalItemsPerPage); 
+0

しかし、私は細胞の総数をしたい場合、私はまだ正しい、2つの数値を乗算する必要がありますか? – Taryn

+0

あなたはページングをしていますか..?もしそうなら、私の答えは拡大される必要があります。あなたは複数のページを持っている場合私は追加のオプションを追加できるように私に教えてください – MethodMan

+0

私はページングを持っていません。私は列ヘッダーのテキストを含める必要があるかどうかを判断するためにセルの総数を使用しているので、Excelにデータを貼り付けるとヘッダーが付きます。 OPの詳細を更新しました。 – Taryn

関連する問題