2016-04-01 21 views
1

レポートを作成しようとしています。DataGridViewで表示できます。私は値を見るのに簡単なコードを使用しています。ビュー]ボタンをクリックするときにここでC#Windowsフォーム - DataGridViewで重複した値で最初の値のみを表示

は私のコードです:

belreport.DailyReport = Convert.ToDateTime(date_day_Daily.Text).ToString("yyyy-MM-dd"); 

DataTable table = balreport.ViewDailyRecord(belreport); 

dgv_daily.DataSource = table; 

は、ここに私のデータベースのテーブルからデータを閲覧するための私のコードです:私のテーブルで

// START Executing to view the data 
public DataTable ViewDailyRecord(BELReport belreport) { 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = dbcon.getcon(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "SELECT * FROM table WHERE [email protected]"; 
    cmd.Parameters.AddWithValue("@Date",belreport.DailyReport); 

    SqlDataReader dr = cmd.ExecuteReader(); 
    DataTable table = new DataTable(); 
    table.Load(dr); 

    return table; 
} 

値が重複することができ固有の識別子を持っています。私は何をしようとしていることは、この

識別子の重複または複数の値があります、あなたが見ることができるすべては、(第一の識別子と細目と量あるようなものである識別子が複数になりますので、I )それを取り除くしたい事前に

おかげ

+0

グループ化識別子はどうですか?あなたの期待される結果は? –

+0

あなたは私のクエリの中のdistinctを意味しますか? –

+0

いいえ..識別子別グループ –

答えて

2

DataGridViewは、任意の組み込みサポートグループ内の行を表示する必要はありません。レポート目的のためには、rdlcレポートのようなレポートツールを使用する方が良いです。

しかし、画像に示されている結果が許容できる結果である場合は、列の前のセルに基づいて、CellFormattingイベントを処理し、各セルの書式設定値を設定することにより、その外観を達成することができる:

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    //I suppose the group column is column at index 0 
    if (e.ColumnIndex == 0 && e.RowIndex > 0) 
    { 
     if (dataGridView1[0, e.RowIndex].Value == dataGridView1[0, e.RowIndex - 1].Value) 
      e.Value = ""; 
    } 
} 
ここで

は出力例です:

enter image description here

それを自分でテストするには:

private void Form1_Load(object sender, EventArgs e) 
{ 
    var dt = new DataTable(); 
    dt.Columns.Add("C1", typeof(string)); 
    dt.Columns.Add("C2", typeof(string)); 

    dt.Rows.Add("1", "11"); 
    dt.Rows.Add("2", "21"); 
    dt.Rows.Add("3", "31"); 
    dt.Rows.Add("1", "12"); 
    dt.Rows.Add("2", "22"); 
    dt.Rows.Add("3", "32"); 
    dt.Rows.Add("1", "13"); 
    dt.Rows.Add("2", "23"); 

    this.dataGridView1.DataSource = dt; 
    this.dataGridView1.Sort(this.dataGridView1.Columns[0], ListSortDirection.Ascending); 
    foreach (DataGridViewColumn column in this.dataGridView1.Columns) 
    { 
     column.SortMode = DataGridViewColumnSortMode.NotSortable; 
    } 

    this.dataGridView1.CellFormatting += dataGridView1_CellFormatting; 
} 
+0

それは動作しません –

+0

スクリーンショットはサンプルの実行から取得しました。残りのコードを追加します。 –

+0

それでは全部試してみましょう:) –

関連する問題