GridView相信這個控件大家已經家喻戶曉,而且用的也非常多了,本文針對GridView的行狀态進行一點淺析,高手請留步,就此打住!
現在我們看個例子,現在要使用gridview輸出一張訂單表,訂單有個狀态字段取值為:0(未完成交易)1(已完成交易),現在重點是,我們綁定資料到gridview,顯然綁定輸出時候隻能輸出0和1,那麼怎麼實作将0輸出為未完成交易,而1輸出為已完成交易呢。這裡我們就需要用到gridview為我們準備的資料行綁定事件了,如下圖所示,我們訂閱該事件,在gridview屬性的閃電圖示下面的選項中:
該事件是什麼作用呢:打個比方整個輸出表格的過程類似一群人去坐一個位置,位置1坐上司,位置2坐學生,現在我們要做的是,要位置2的學生,坐上三好學生,girdview綁定後,現在坐的就是學生,而該事件就是發生在這個學生坐上這個位置之後,是以,我們在這個事件響應函數裡面做的就是将三号學生取代掉該學生!
然後在訂閱該事件後的響應函數中輸入以下代碼:
這段代碼出現在gridview的行綁定事件中,首先我截取資料,如果該單元格顯示的是0,那麼我将其修改為未完成,反之 ,則修改為完成。
相信這段代碼很多人見怪不怪了,但是那上面的幾個判斷條件是什麼意思呢?現在我就一一分析。
一. 變量e
這是在建造行對象時産生的事件描述資料,它裡面包含正在建造的目前行對象的資訊,通過它我們可以取得正在建造的行對象和行對象中的單元格對象,并可以取得或設定這些對象相應的屬性,這個變量的重要程度,直接決定了gridview在自定義操作中的霸主地位。
二、e.Row.RowType屬性
它描述的是正在建造的行對象的類型(頁眉、頁腳、資料行、分頁行、分隔符)
取值為:DataControlRowType枚舉類型
(1)DataRow:資料行,也就是我們判斷經常使用到,他表示我們操作的對象隻是綁定的資料部分,而不是頁腳、頁眉之類的部分
(2)EmptyDataRow:空資料行,也就是目前表示的是資料記錄為空的行,這個必須在我們設定了空模闆時候有效
(3)Footer:目前行是腳注行
(4)Hearder:目前行是标題行
(5)Separator:目前行是分隔符
(6)Pager:目前行是分頁行
有了這些,我們就可以判斷目前行是什麼了,然後就可以執行響應的操作,比如上面這個例子,我就先判斷是不是資料行,進而進行下一步的操作!
下一步的問題來了,我們怎麼去判斷資料行是處于什麼狀态呢(有點基礎的同學應該知道,資料行可能會處于多種狀态,比如編輯狀态、選中狀态、正常态等),這時候我需要的是正常狀态下的所有資料行,怎麼判斷呢?見三.
三、e.Row.RowState屬性
它表示正在建造的行對象的狀态(普通狀态、交替狀态、編輯狀态、選中狀态等)
(1)Alternate:交替态行
(2)Normal:正常态行
(3)Edit:編輯态行
(4)Insert:插入态行
(5)Selected:選中态。
它代表我們的操作隻對資料行起作用,不對頁眉和頁腳起作用(因為頁眉頁腳的文本中并不包含我們需要的資料)。并且僅當資料行處理普通狀态和交替狀态時起作用,在編輯和選中狀态不是不起作用的(編輯狀态下,資料不是顯示在單元格的Text中,而是顯示在單元格的控件中的)。是以,對于如何取得表中相應位置處的值,判斷資料行的狀态十分重要,現在我們的例子隻是修改綁定資料行的某個單元格的值,是以隻需判斷目前行的狀态為Normal或者Alternate即可,記住,不要少任何一項,少了會遺漏行資料,我之前不寫Alternate這一狀态,那麼就無法取得第二條記錄的資料,如下圖,此時的第二行資料無法撲捉,原因是該行資料在判斷行狀态的時候被跳轉了:
姑且可以認為Normal取的是偶數行資料,Alternate取的是奇數行(交替航)資料,他們的共同使用可以保證我們取得所有的綁定行資料。如此,我們也就完完全全的掌控了自定選擇行的過程,這時候我們就可以輕輕松松的完成自定義綁定的過程了。
找出綁定資料行對應的單元格資料,執行修改!
完成效果如下:
好了,我的講解到此為止。
第一次寫博!有什麼不好的地方大家見諒
------------------------------------------------------------------------------------------------------------------------------------------------------------熱愛ASP.NET,熱愛C#!!!!