層級關係的數據展示

       層次關係的數據展示,即我們常說的數據展示分析。舉個例子,好比有A,B,C三個教師,每個教師帶幾個學生,假設A教師帶S1,S2,S3三個學生,B教師帶S4,S5,S6三個學生,C教師帶S7,S8,S9三個學生,在一個網格中,先將三位教師的信息顯示出來,然後分別點擊每個教師的信息,彈出所帶學生的相關信息。它屬於分層展示數據的一種方式。

如下圖所示,有兩個部門,第一個部門裏面所擁有的介質有水,電,蒸汽;第二個部門有水,電,還有催化燒焦,當點擊左邊的部門信息旁邊的加號時,展開和該部門相關的介質信息。

 

 

 

       第三方控件Infragistics中的UltraWinGrid中自帶有這種功能,只要將DataSet中幾個表的關係添加一下,就會自動顯示成上面的樣式。下面的這個方法中DataSet.Relations.Add()是設置表之間的關係的,它有幾個重載方法。自己根據需要進行選擇。

        private void FillTable()
        {
            string strSql = "select 部門編碼,部門名稱 from 部門表 where 條件";
            DataSet ds = GetDataSet(strSql,"dep");
            strSql = "select 介質編碼,介質名稱,部門編碼 from 介質表 where 條件";
            SlnDataAccess.FillDataSet(ds, "nhxm", strSql);

            //添加關係
            ds.Relations.Add(ds.Tables[0].Columns[0], ds.Tables[1].Columns[2]);

            //綁定
            this.grdTest.DataSource = ds;
            this.grdTest.DataBind();
            Infragistics.Win.UltraWinGrid.UltraGridBand band = this.grdTest.DisplayLayout.Bands[0];

            band.Columns[0].Header.Caption = "部門編碼";
            band.Columns[0].Width = 80;
            band.Columns[1].Header.Caption = "部門名稱";
            band.Columns[1].Width = 80;

            band = this.grdTest.DisplayLayout.Bands[1];

            band.Columns[0].Header.Caption = "介質編碼";
            band.Columns[0].Width = 80;
            band.Columns[1].Header.Caption = "介質名稱";
            band.Columns[1].Width = 80;
            band.Columns[2].Hidden = true;

            //加顏色進行區分
            this.grdTest.DisplayLayout.Bands[0].Override.RowAppearance.BackColor = Color.LightSalmon;
            this.grdTest.DisplayLayout.Bands[1].Override.RowAppearance.BackColor = Color.LightYellow;
        }

        只要明確各表之間的關係,然後填充到DataSet中,將DataSet做爲數據源賦值給ultraGrid就可以實現上述的分級展示了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章