DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法
? ? 有時(shí)候我們須要在控件中綁定DataTable中設(shè)定條件過濾后的數(shù)據(jù),此時(shí),在winForm環(huán)境中,一些控件不能正確綁定并顯示數(shù)據(jù)內(nèi)容。這是由于DataTable.Select()返回的是DataRow[]類型的行數(shù)組。沒有行列相關(guān)架構(gòu)值。而控件如ListBox、comboBox等不能識(shí)別行數(shù)組中的列。讀不到行列架構(gòu)值,所以無法正常顯示。
? ? 解決的方法是用DataView進(jìn)行轉(zhuǎn)換,即在DataView中對DataTable過濾數(shù)據(jù)。
DataView構(gòu)造函數(shù)例如以下:
? ??DataView ( DataTable dt, ?String RowFilter, ?String SorColName, ?DataViewRowState)
? ? dt 用于獲取或設(shè)置源
? ? RowFilter 獲取或設(shè)置用于篩選在 DataView 中查看哪些行的表達(dá)式
? ? SorColName 獲取或設(shè)置 DataView 的一個(gè)或多個(gè)排序列以及排序順序
? ? DataViewRowState 具體取值及功能見下表:
| ? | Added | 一個(gè)新行。 |
| ? | CurrentRows | 包含未更改行、新行和已改動(dòng)行的當(dāng)前行。 默認(rèn)情況下。DataViewRowState 項(xiàng)設(shè)置當(dāng)前行。 |
| ? | Deleted | 已刪除的行。 |
| ? | ModifiedCurrent | 已改動(dòng)的原始數(shù)據(jù)的當(dāng)前版本號(請參見 ModifiedOriginal)。 |
| ? | ModifiedOriginal | 已改動(dòng)的數(shù)據(jù)的原始版本號。(雖然此數(shù)據(jù)已被改動(dòng),它仍作為 ModifiedCurrent 可用)。 |
| ? | None | 無。 |
| ? | OriginalRows | 包含未更改行和已刪除行的原始行。 |
| ? | Unchanged | 未更改的行。 |
? Count 在應(yīng)用RowFilter后,獲取DataView中的行數(shù)
? ? 應(yīng)用例子:
? ? ? ? ? ? DataTable jgbjlx = getDataTable( "jgbjlx");
? ? ? ? ? ? jgbjlxcomboBox.DisplayMember = "jgname";
? ? ? ? ? ? jgbjlxcomboBox.ValueMember = "id";
? ? ? ? ? ? jgbjlxcomboBox.DataSource = new DataView(jgbjlx?, "id>0","id",DataViewRowState.CurrentRows);
? ? 使用DataView還能夠依據(jù)行的狀態(tài)設(shè)置DataViewRowState,實(shí)現(xiàn)顯示更改和已經(jīng)刪除的行、改動(dòng)前的原始行、未更改的行等子集。
總結(jié)
以上是生活随笔為你收集整理的DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Dubbo实战]dubbo + zoo
- 下一篇: Python 十七章 Web开发