XtraReport交叉表隱藏列標題及自定義排序


1.隱藏列標題

用DevExpress PivotGrid report 做報表的時候,將字段拖放到報表中后,ColumnArea和DataArea會顯示兩個標題字段,如下圖:

clip_image001

選中交叉表,設置以下屬性可以隱藏:

clip_image002

效果如下:

clip_image003

2.自定義排序

做報表的時候,設定ColumnArea的FiledName為sSize,最終呈現的報表是依據sSize排序。而期望的是按照iSizeGroupId,iSizeOrder排序,但iSizeGroupId,iSizeOrder由於不用在報表中呈現,故未將其拖放在報表中.

如何使ColumnArea依據iSizeGroupId,iSizeOrder來排序呢? 使用xrPivotGrid1_CustomFieldSort 事件可以解決這個問題。

具體處理如下:

1.設置sSize的SortMode為Custom。否則xrPivotGrid1_CustomFieldSort 事件不會觸發。

clip_image004

clip_image005

2.處理xrPivotGrid1_CustomFieldSort 事件。

注:此處的排序字段也可以在SQL中提前處理好,在SQL中將兩個字段合並一個排序字段。

private void pivotGrid1_CustomFieldSort(object sender, HuanSi.XtraReports.UI.PivotGrid.PivotGridCustomFieldSortEventArgs e)

{

//當列為sSize時,才處理自定義排序

if (e.Field.FieldName == "sSize")

{

if (e.Value1 == null || e.Value2 == null) return;

e.Handled = true;

//取iSizeGroupId

string sg1 = e.GetListSourceColumnValue(e.ListSourceRowIndex1, "iSizeGroupId").ToString();

string sg2 = e.GetListSourceColumnValue(e.ListSourceRowIndex2, "iSizeGroupId").ToString();

//取iSizeOrder

string s1 = e.GetListSourceColumnValue(e.ListSourceRowIndex1, "iSizeOrder").ToString();

string s2 = e.GetListSourceColumnValue(e.ListSourceRowIndex2, "iSizeOrder").ToString();

//比較iSizeGroupId

if (string.Compare(sg1, sg2) > 0)

{

e.Result = 1;

}

else if (string.Compare(sg1, sg2) == 0) //iSizeGroupId相等時,再比較iSizeOrder

{

e.Result = string.Compare(s1, s2);

}

else

{

e.Result = -1;

}

}

}

3.保存預覽即可達到預期目標

clip_image006


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM