2016-10-07 9 views
3

データグリッドを使用していますが、値が表示されません。現在のコードは以下の通りですが、行を反転するにはどうしたらいいですか?DataGridViewの行を逆にする方法

string[] strOutput = strLine.Split('_', ',','='); 

int totalRows = Convert.ToInt16(strOutput[4]); 
int totalCols = Convert.ToInt16(strOutput[5]); 
int itemIndex = 8; 

for (int i = 0; i < totalCols; i++){ 
    dataGridView1.Columns.Add("Col", "Col"); 
} 
dataGridView1.Rows.Add(totalRows); 
for (int i = 0; i < totalRows; i++) { 
    for (int j = 0; j < totalCols; j++) { 
     dataGridView1.Rows[i].Cells[j].Value = strOutput[itemIndex]; 
     itemIndex += 2; 
    }     
} 
dataGridView1.Visible = true; 

Invert Rows

+1

あなたがしたい場合は意味あなたはそれをすべきであるスロートの順序を逆にする:ソート順序を変更する。あなたはおそらくあなたが持っていない場合。あなたが90度回転することを意味するなら、あなたは[この記事]を使うことができます(http://stackoverflow.com/questions/853663/is-it-possible-to-switch-rows-and-columns-in-a-datagridview?rq = 1)を開始.. – TaW

+0

私はどのように行の並べ替え順序を逆にするのだろうか?私は行と列を転置する必要はありません、私はちょうど反転された行が必要です – Shadow89

+1

あなたが実際に__have__並べ替え順序を元に戻すことができます通常通りです。 DBMSソートの場合は、DESDENDING ORDERです。 Linqソートの場合はOderDescending()です。 BindingSource.Sortの場合は、フィールドDESCです。しかし、あなたはレコードがどこから来たのかわからなかった。 – TaW

答えて

3

あなただけはできる代わりに、いずれかの後にそれを行う必要がある場合

void ReverseDGVRows(DataGridView dgv) 
{ 
    List<DataGridViewRow> rows = new List<DataGridViewRow>(); 
    rows.AddRange(dgv.Rows.Cast<DataGridViewRow>()); 
    rows.Reverse(); 
    dgv.Rows.Clear(); 
    dgv.Rows.AddRange(rows.ToArray()); 
} 

:あなたはこれを使用することができます

012逆
  • またはその代わりAddingの行(最後まで)上部のInsertでソースファイルの行を超える
    • ループ:

    dtnew.Rows.Insert(0, currentDataRowView.Row); 
    
  • +0

    パーフェクト!どうもありがとうございます。 – Shadow89

    0

    反転行:

    "DataGridView.Rowsは" .-あなたに "DataGridViewRowCollection"

    反復逆の順序でコレクションを与え、新しいデータテーブルを作成します。 (最大サイズからゼロまでのループの場合)

    新しいdatatableをdatagridviewソースに割り当てます。

    この大まかなコードはあなたの考えのためにメモ帳で書かれています。私は今IDEを持っていません。私は50の評判を持っていないので、

    DataGridViewRowCollection dgRowColllection = dataGridView1.Rows; 
    DataTable dtnew = new DataTable(); 
    for(i = dataGridView1.RowCount; i < 1 ; i--) 
    { 
    DataRowView currentDataRowView = dgRowColllection[i].Row; 
    
    dtnew.Rows.Add(currentDataRowView.Row); 
    
    } 
    
    dataGridView1.source = dtnew; 
    
    +0

    擬似コード – Naidu

    +0

    で回答を編集します。私はIDEを今すぐ持っていません。私は大まかなソースコードを追加しています。 – Naidu

    +0

    私には分 – Naidu

    0

    はPavanの答えにコメントすることはできませんが、ループのようなものでなければなりませんので、あなたは、エラーを取得していますDataGridViewRowsを逆転すなわちを反転するには

    int totalRows = Convert.ToInt16(strOutput[4]); 
    int totalCols = Convert.ToInt16(strOutput[5]); 
    int itemIndex = 8; 
    
    for (int i = 0; i < totalCols; i++) 
    { 
        dataGridView1.Columns.Add("Col", "Col"); 
    } 
    dataGridView1.Rows.Add(totalRows); 
    for (int i = 0; i < totalRows; i++) 
    { 
        for (int j = 0; j < totalCols; j++) 
         { 
          dataGridView1.Rows[i].Cells[j].Value = strOutput[itemIndex]; 
          itemIndex += 2; 
         } 
         DataGridViewRowCollection dgRowColllection = dataGridView1.Rows; 
         DataTable dtnew = new DataTable(); 
         for (i = dataGridView1.Items.Count; i < 1; i--) 
         { 
          DataRowView currentDataRowView = dgRowColllection[i].Row; 
          dtnew.Rows.Add(currentDataRowView.Row); 
         } 
         dataGridView1.DataSource = dtnew; 
        }  
        dataGridView1.Visible = true; 
    } 
    
    +0

    真のボス。私はIDEを持っていない...私はアプリで電話をしています – Naidu

    +0

    私のコードを編集して2つのエラーがあります---- for(i = dataGridView1.Items.Count; i <1; i - )----項目が定義を探しています---- DataRowView currentDataRowView = dgRowColllection [i] .Row; ---- Rowは定義を探しています – Shadow89

    関連する問題