GridView中RowDataBound事件 獲取列值的方法

GridView是ASP.NET中功能強大的數據顯示控件,它的RowDataBound事件爲我們提供了方便的控制行、列數據的途徑。 軟件開發網 www.mscto.com

要獲取當前行的某個數據列,有如下幾種方法:

 

1. Cells[x].Txt。
    從列單元格的文本值獲取。這種方法簡單高率,最爲常用,但是功能單純。此法存在幾個缺點:
    (1)無法獲取到設置了隱藏屬性的數據列的值,所取到的值爲“”(空)。
    (2)只能獲取在HTML中定義過的數據列,無法查詢數據源中的當前數據行的所有字段列。一般情況下,通過HTML設置GridView的字段列的數量往往小於數據源的實際字段數量,這是因爲從業務邏輯的角度看,並不是所有的字段都是要顯示在頁面上的。當需要使用沒有被顯示的字段時,此法就不能直接滿足需求了。

 

 

2. e.Row.Cells[x].FindControl("YourcontrolName")。
    這是在單元格內查找某個服務器控件,從而獲得其數據值。這種方式可以操作單元格內的服務器控件。此法一般用於處理模板列中的數據或控件。

3. (DataRowView)e.Row.DataItem).Row.ItemArray[x].ToString()。
    此法的核心是e.Row.DataItem,它是GridView的行數據集,爲Object類型,將其轉化爲DataRowView類型後,可以獲得更多的操作方法。此數據集表示數據源當前行的全部字段列,ItemArray[x]是當前行全部字段列的數組對象,可以通過索引x獲得任意字段值。此法的強悍之處是可以對數據源的全部字段查詢。

4. DataBinder.Eval(e.Row.DataItem, "YourDataFieldName").ToString()。
    此法仍然基於e.Row.DataItem,其特點是更快捷的獲得數據源的任意字段值,因爲使用了DataBinder.Eval(),需要注意的是不要寫錯字段名稱。 軟件開發網 www.mscto.com

5. 將e.Row.DataItem轉化爲自定義類型,實現數據類型化。
    例如:
    DSRequestTracking.TB_RequestTrackingRow rtrow=(DSRequestTracking.TB_RequestTrackingRow)((DataRowView)e.Row.DataItem).Row;
    RequestStatusDropDownList1.SelectedValue = rtrow.StatusID.ToString();
    其中DSRequestTracking是通過DSRequestTracking.xsd文件在工程中自定義的強類型DataSet, TB_RequestTrackingRow是VS自動爲此強類型生成的創建數據行對象的方法。通過此法,實現了類型化數據的廣泛應用。數據類型化的好處很多,顯而易見的便是傳一個類型數據給方法,取代一大堆參數,另外就是再也不會發生字段名拼寫錯誤的情況。

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