排序欄位執行階段自訂
您可以使用排序欄位來選擇報表中排序資料用的欄位。排序方向可以是遞增、遞減、前 N 項或後 N 項順序。
下列範例讓使用者在執行階段修改報表的排序條件欄位。
案例:在執行階段變更排序欄位。
假設您擁有 Crystal Report,而且報表中存在下列條件:
- 報表的細目區段中含有兩個欄位 {客戶.名稱} 和 {客戶.國家}。
- 資料在 {客戶.名稱} 欄位進行排序。
您可以在報表中變更排序次序,只要加入程式碼至 Button 控制項即可。
若要在執行階段排序欄位
建立報表 (建立使用範例資料庫 xtreme.mdb 之客戶資料表的報表)。
以滑鼠右鍵按一下您要設為預設排序欄位的欄位,在快速鍵功能表上按一下 [排序資料錄] 並將這個欄位指定為要進行排序的欄位。
在這個範例中,預設的排序欄位為 {客戶.名稱}。
將報表繫結至檢視器。
將 Button 控制項加入至表單。
使用者可以按一下這個按鈕來變更排序欄位。在這個範例中,該按鈕將排序欄位從 {客戶.名稱} 變更為 {客戶.國家}。
按兩下 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);
使用下列程式碼結束此程式碼區段以重新整理對應的報表:
CrystalReportViewer1.RefreshReport()