共用方式為


排序欄位執行階段自訂

您可以使用排序欄位來選擇報表中排序資料用的欄位。排序方向可以是遞增、遞減、前 N 項或後 N 項順序。

下列範例讓使用者在執行階段修改報表的排序條件欄位。

案例:在執行階段變更排序欄位。

假設您擁有 Crystal Report,而且報表中存在下列條件:

  • 報表的細目區段中含有兩個欄位 {客戶.名稱} 和 {客戶.國家}。
  • 資料在 {客戶.名稱} 欄位進行排序。

您可以在報表中變更排序次序,只要加入程式碼至 Button 控制項即可。

若要在執行階段排序欄位

  1. 建立報表 (建立使用範例資料庫 xtreme.mdb 之客戶資料表的報表)。

  2. 以滑鼠右鍵按一下您要設為預設排序欄位的欄位,在快速鍵功能表上按一下 [排序資料錄] 並將這個欄位指定為要進行排序的欄位。

    在這個範例中,預設的排序欄位為 {客戶.名稱}。

  3. 將報表繫結至檢視器。

  4. Button 控制項加入至表單。

    使用者可以按一下這個按鈕來變更排序欄位。在這個範例中,該按鈕將排序欄位從 {客戶.名稱} 變更為 {客戶.國家}。

  5. 按兩下 Button 控制項以指定 Click 事件的程式碼。請根據您使用的語言,將適當的程式碼 (從下列範例中) 插入對應的原始程式檔。

    [Visual Basic]

    Dim FieldDef As FieldDefinition
    FieldDef = _ 
       Report.Database.Tables.Item(0).Fields.Item(comboBox1().Text)
    Report.DataDefinition.SortFields.Item(0).Field = FieldDef
    

    [C#]

    FieldDef = new FieldDefinition ();
    FieldDef = Report.Database.Tables [0].Fields [comboBox1.Text];
    Report.DataDefinition.SortFields [0].Field = FieldDef;
    

    [C++]

    FieldDefinition* FieldDef;
    FieldDef = Report->Database->Tables->Item [0]->
    Fields->Item [comboBox1->Text];
    Report->DataDefinition->SortFields->Item [0]->Field = FieldDef;
    

    [VJ#]

    FieldDef = new FieldDefinition ();
    FieldDef =
    Report.get_Database().get_Tables().get_Item(0).get_Fields().get_Item
    (comboBox1.get_Text());
    Report.get_DataDefinition().get_SortFields().get_Item(0).set_Field
    (FieldDef);
    
  6. 使用下列程式碼結束此程式碼區段以重新整理對應的報表:

    CrystalReportViewer1.RefreshReport()
    

請參閱

Windows Form Viewer 的繫結選項|Web Form Viewer 的繫結選項|排序資料