1. 程式人生 > >Dev控制元件 TreeList的使用,繫結多級樹以及多選框的三種狀態

Dev控制元件 TreeList的使用,繫結多級樹以及多選框的三種狀態

TreeList控制元件可以同時顯示樹結構和其他資料列,即在一個列上建立父子關係展開或收縮,同時還可以顯示其他列的內容。

在TreeList中同時引入了
Node和 Columns概念,
第一列為樹結構,
其餘列為資料列,
任何列都可作為樹結構列(即拖動到第一列)顯示

1.實現多級樹---資料來源繫結

在TreeList裡新增要顯示列(第一列為樹結構,其他列為資料列),並指定FieldName為資料庫列名

指定KeyFieldName屬性為主鍵,ParentFieldName屬性為樹狀分組列。注意
ParentFieldName指定的列如果為空值,樹狀可能會混亂(只有一個根結點,其他為此節點的子結點)

用TreeList.DataSource = DataTable 繫結資料即可

(以下內容為轉載)多選框的三種狀態

樹形控制元件是使用頻率很高的一種控制元件。對於屬性控制元件往往需要下面兩個功能
1.TreeList帶有CheckBox,並且節點要有三種狀態(所有的子節點都選中,所有的子節點都沒選擇,一部分子節點選中)。使用DevXpress的TreeList控制元件很容易實現這一功能。
設定TreeList.OptionsView.ShowCheckBoxes = true //是否顯示CheckBox
設定TreeList.OptionsBehavior.AllowIndeterminateCheckState = true; //設定節點是否有中間狀態,即一部分子節點選中,一部分子節點沒有選中
設定這兩個屬性之後就實現了TreeList帶有CheckBox,並且節點有三種狀態。
2.選中父節點或者子節點相互影響的功能,如選擇父節點選擇所有子節點。繫結TreeList的兩個事件AfterCheckNode和BeforeCheckNode
實現功能的程式碼如下:
private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
{
SetCheckedChildNodes(e.Node, e.Node.CheckState);
SetCheckedParentNodes(e.Node, e.Node.CheckState);
}
private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e)
{
e.State = (e.PrevState == CheckState.Checked ? CheckState.Unchecked : CheckState.Checked);
}
///
/// 設定子節點的狀態
///
///
///
private void SetCheckedChildNodes(TreeListNode node, CheckState check)
{
for (int i = 0; i < node.Nodes.Count; i++)
{
node.Nodes[i].CheckState = check;
SetCheckedChildNodes(node.Nodes[i], check);
}
}
///
/// 設定父節點的狀態
///
///
///
private void SetCheckedParentNodes(TreeListNode node, CheckState check)
{
if (node.ParentNode != null)
{
bool b = false;
CheckState state;
for (int i = 0; i < node.ParentNode.Nodes.Count; i++)
{
state = (CheckState)node.ParentNode.Nodes[i].CheckState;
if (!check.Equals(state))
{
b = !b;
break;
}
}
node.ParentNode.CheckState = b ? CheckState.Indeterminate : check;
SetCheckedParentNodes(node.ParentNode, check);
}
}
VB.net語言程式碼如下
Private Sub trlContact_AfterCheckNode(ByVal sender As System.Object, ByVal e As DevExpress.XtraTreeList.NodeEventArgs) Handles trlContact.AfterCheckNode
SetCheckedChildNodes(e.Node, e.Node.CheckState)
SetCheckedParentNodes(e.Node, e.Node.CheckState)
End Sub
‘設定子結點的狀態
Private Sub SetCheckedChildNodes(ByVal node As TreeListNode, ByVal check As CheckState)

    For i As Integer = 0 To node.Nodes.Count - 1
        node.Nodes(i).CheckState = check
        SetCheckedChildNodes(node.Nodes(i), check)
    Next
End Sub
'設定父結點的狀態
Private Sub SetCheckedParentNodes(ByVal node As TreeListNode, ByVal check As CheckState)
    If node.ParentNode Is Nothing = False Then
        Dim b As Boolean = False
        Dim state As CheckState
        For i As Integer = 0 To node.ParentNode.Nodes.Count - 1
            state = node.ParentNode.Nodes(i).CheckState
            If check.Equals(state) = False Then
                b = Not b
                Exit For
            End If
        Next

        If b Then
            node.ParentNode.CheckState = CheckState.Indeterminate
        Else
            node.ParentNode.CheckState = check
        End If

        SetCheckedParentNodes(node.ParentNode, check)
    End If
End Sub


Private Sub trlContact_BeforeCheckNode(ByVal sender As System.Object, ByVal e As DevExpress.XtraTreeList.CheckNodeEventArgs) Handles trlContact.BeforeCheckNode

    If e.PrevState = CheckState.Checked Then
        e.State = CheckState.Unchecked
    Else
        e.State = CheckState.Checked
    End If

End Sub!

相關推薦

Dev控制元件 TreeList的使用多級以及狀態

TreeList控制元件可以同時顯示樹結構和其他資料列,即在一個列上建立父子關係展開或收縮,同時還可以顯示其他列的內容。 在TreeList中同時引入了 Node和 Columns概念, 第一列為樹結構, 其餘列為資料列, 任何列都可作為樹結構列(即拖

C#開發學習筆記:向Dev控制元件庫中的GridControl新增自定義複

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Dev控制元件庫自帶的有複選框列,預設是不顯示狀態,如果需要則設定相關

uwp開發:Slider控制元件和MediaElement實現拖動播放.

1、實現原理: Slider拖動時,Value值改變,MediaElement播放時,Position值改變。所以,只需將Slider的Value屬性和MediaElement的Position屬性進行繫結即可。 2、實現方法: Slider的Value屬性是dou

Dev 控制元件treelist等滾動條使用

使用dev的treelist控制元件,系統預設的滾動條太細太小,當資料很多時候,拖動滾動條的時候使用者使用極其不方便。這個問題通過設定dev的窗體面板顯示即可完成。因為treelist控制元件的滾動條隨著不同窗體顯示風格變化的,可通過面板進行顯示,如下: 1、引入DevEx

WPF 給控制元件新增可以的命令

在WPF裡的Button有一個可以繫結的Command的屬性,只要繫結好這個屬性以後,只要你ClickButton就 會執行這個命令,但這時我們可以考慮一下這個問題,為什麼是Click來觸發呢?為什麼不是右鍵單擊來觸發呢, 下面研究一下,怎麼能寫一個右鍵單機能觸發的命令:

Vue input控制元件通過value動態屬性及修飾符

對於單選按鈕,勾選框及選擇列表選項, v-model 繫結的 value 通常是靜態字串(對於勾選框是邏輯值): <!-- 當選中時,`picked` 為字串 "a" --> <input type="radio" v-model="pi

ComboBox控制元件的資料

      ComboBox控制元件是一個下拉組合控制元件,該控制元件可以讓使用者輸入或下拉選擇內容。在使用的時候經常只是繫結資料表中的其中一列或把其中一列的值新增到Items中,如:name 。但在查詢或使用的時候有可能需要name 所對應的ID,然而這時朋友們可能還要再用

C#中DataGridView控制元件的資料

最近公司有個專案需要用c#來顯示資料庫的內容,作為一個只會c\c++的程式設計師,起初我心裡還是有些沒底的。然後就上網蒐集了一些關於DataGridView控制元件的資料,為免遺忘,特此記錄。 1 什麼是DataGridView DataGridVi

jquery a標籤不可點bind/解除unbind點ajax防止重複提交

方法1 (繫結bind/解除unbind點選): <a href="javascript:void(0)" id="dianji">點選</a> <br/><

【轉】WPF自定義控制元件與樣式(8)-ComboBox與自定義控制元件MultComboBox

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。   本文主要內容: 下拉選擇控制元件ComboBox的自定義樣式及擴充套件; 自定義多選控制元件MultiComboBox; 二.下拉選擇控制元件ComboBox的自

WPF MVVM後臺沒有Command屬性的控制元件任何事件事件

前言,我們在WPF開發中應用MVVM開發模式時,一般用來繫結Button 的Command命令,但是有很多控制元件MS沒有給出Command命令,我們需要新增一個DLL來增加繫結時的屬性。 下面來們來看一看。 本次測試有:TextBlock,Labe,TextBox三個 控

DEV元件LookupEdit,ComboBoxEdit資料來源 DEV元件LookupEdit,ComboBoxEdit資料來源

DEV元件LookupEdit,ComboBoxEdit繫結資料來源 LookupEdit可以繫結資料表(DataTable)或物件資料組(Object List)作為資料來源,下拉窗體可自定顯示欄位。繫結資料來源需要設定三個引數:DisplayMember ,ValueMember,Data

dev 控制元件使用技巧待完善

1、treeList不顯示父級子級結構,如grid使用 屬性: Options->OptionsView 下的 ShowPreview:True,ShowRoot:False 資料 下的 KeyFieldName:ID,ParentFiledName:ID。去掉選擇列

Vue父子元件資料雙向元件可修改props

父元件 => props[parent-data] => 子元件 => watch[parent-data] => children-data = parent-data // 子元件監聽父元件的改變 子元件 => $emit[children

DEV控制元件TreeList使用

繫結DataTable 直接設定DataSource即可,同時需要設定KeyFieldName和ParentFieldName兩個屬性,好處就是,無需像TreeView一樣去遞迴節點,設定了這兩個屬性自動實現節點繫結。 注意:繫結的欄位名稱區分大小寫 //簡單繫結

ListView優化時控制元件報空指標。

 FATAL EXCEPTION: main                                   &n

2018年11月2日 關於dropdownlist資料來源後顯示system.data.datarowview的問題解決

準備實現兩個dropdownlist二級聯動的功能: 在一個dropdownlist 繫結過資料來源之後顯示,system.data.datarowview,無法顯示從資料庫中查詢到的值。 原因是:  DropDownList4.DataTextField沒有繫結。 &nb

MFC OnPaint中控制元件繪圖覆蓋重疊的控制元件

對話方塊上又兩個控制元件,一個static控制元件SS_BITMAP屬性,用來繪圖(canvas),一個static控制元件SS_BITMAP屬性,用來顯示圖片(tool),tool和canvas有重疊部分,為了使canvas在重新整理後不至於消失,我在OnPaint中採用雙緩衝繪圖方式重新整理內容

js後加載頁面元素時間都無法用解決方法

問題如下,頁面的table元素動態新增,當對table中的input做限制的時候無法操作,先看程式碼: $("#defaultView_content input").attr("disabled","disabled"); 然後噁心的我抓狂,後來通過谷歌搜了一波,果然: $('#defa

c#讀取txt,xml,excel中的資料到lsitview ,dataview

c#讀取txt,xml,excel中的資料,繫結到lsitview ,dataview c讀取txtxmlexcel中的資料繫結到lsitview dataview c#讀取txt,xml,e