DataSource綁定DataTable.Select()顯示system.data.DataRow問題解決的方法


    有時候我們須要在控件中綁定DataTable中設定條件過濾后的數據,此時,在winForm環境中,一些控件不能正確綁定並顯示數據內容。這是由於DataTable.Select()返回的是DataRow[]類型的行數組。沒有行列相關架構值。而控件如ListBox、comboBox等不能識別行數組中的列。讀不到行列架構值,所以無法正常顯示。

    解決的方法是用DataView進行轉換,即在DataView中對DataTable過濾數據。

DataView構造函數例如以下:

    DataView ( DataTable dt,  String RowFilter,  String SorColName,  DataViewRowState)


    dt 用於獲取或設置源

    RowFilter 獲取或設置用於篩選在 DataView 中查看哪些行的表達式

    SorColName 獲取或設置 DataView 的一個或多個排序列以及排序順序

    DataViewRowState 具體取值及功能見下表:

  Added 一個新行。
  CurrentRows 包含未更改行、新行和已改動行的當前行。 默認情況下。DataViewRowState 項設置當前行。
  Deleted 已刪除的行。

  ModifiedCurrent 已改動的原始數據的當前版本號(請參見 ModifiedOriginal)。

  ModifiedOriginal 已改動的數據的原始版本號。(雖然此數據已被改動,它仍作為 ModifiedCurrent 可用)。
  None 無。
  OriginalRows 包含未更改行和已刪除行的原始行。

  Unchanged 未更改的行。

  Count 在應用RowFilter后,獲取DataView中的行數

    應用例子:

            DataTable jgbjlx = getDataTable( "jgbjlx");
            jgbjlxcomboBox.DisplayMember = "jgname";
            jgbjlxcomboBox.ValueMember = "id";
            jgbjlxcomboBox.DataSource = new DataView(jgbjlx , "id>0","id",DataViewRowState.CurrentRows);

    使用DataView還能夠依據行的狀態設置DataViewRowState,實現顯示更改和已經刪除的行、改動前的原始行、未更改的行等子集。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM