今天就以昨天的列表為例,實現以下效果:預算大於110萬的單元格突出顯示,加上行序號以及注釋,如下圖:
添加行序號要用到CustomDrawNodeIndicator方法,要注意的是,取得的節點索引是從0開始的,所以要+1以便第一行從一開始算起。
private void treeList1_CustomDrawNodeIndicator(object sender, CustomDrawNodeIndicatorEventArgs e) { TreeList tree = sender as DevExpress.XtraTreeList.TreeList; tree.IndicatorWidth = 30; IndicatorObjectInfoArgs args = e.ObjectArgs as IndicatorObjectInfoArgs; args.DisplayText = (tree.GetVisibleIndexByNode(e.Node) + 1).ToString(); }
若要添加單元格注釋,則要用到toolTipController控件:。將其拉入界面中,並將Treelist的tooltipcontroller屬性設置為剛才的控件名稱,然后定義控件的GetActiveObjectInfo事件,本例顯示了單元格的內容、列和節點的索引:
private void toolTipController1_GetActiveObjectInfo(object sender, DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e) { if (e.SelectedControl is DevExpress.XtraTreeList.TreeList) { TreeList tree = (TreeList)e.SelectedControl; TreeListHitInfo hit = tree.CalcHitInfo(e.ControlMousePosition); if (hit.HitInfoType == HitInfoType.Cell) { object cellInfo = new TreeListCellToolTipInfo(hit.Node,hit.Column,null); string toolTip = string.Format("{0} (Colomn: {1}, Node ID: {2})", hit.Node[hit.Column], hit.Column.VisibleIndex, hit.Node.Id); e.Info = new DevExpress.Utils.ToolTipControlInfo(cellInfo,toolTip); } } }
最后,說一下自定義單元格,就是把符合條件的單元格按照定義的方式進行顯示,例如本例是將預算大於110萬的單元格背景變成粉色並且字體白色加粗顯示。
private void treeList1_NodeCellStyle(object sender, GetCustomNodeCellStyleEventArgs e) { if (e.Column.FieldName != "Budget") return; if (Convert.ToInt32(e.Node.GetValue(e.Column.AbsoluteIndex)) > 1100000) { e.Appearance.BackColor = Color.FromArgb(80,255,0,255); e.Appearance.ForeColor = Color.White; e.Appearance.Font = new Font(e.Appearance.Font, FontStyle.Bold); } }