總結.NET開發中ADO.NET的應用(6)_.Net教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:關于Gridview的多種使用方法總結asp.net中 Gridview的多種使用方法總結,具體如下面 截圖,并包括詳細源代碼注釋,需要的請下載。 1:在Gridview中無須編寫后臺代碼,直接實現增除刪改 2:在Gridview中添加新記錄 3:在Gridview中實現編輯和更新操作 4:在Gridview中實現一次性更新所有記錄
◆ 在程序中訪問DataGrid中的內容
DataTable中有數據行DataRow,而在DataGrid中沒有行這個對象,這讓人感到很不習慣,也覺得不夠自然。在DataTable中,一張表的層次結構很清楚,DataTable.Rows屬性可以得到這張表所包含的所有行的行集,通過行集的索引DataRowCollection[index]就可以得到具體的一個DataRow,數據行的索引DataRow[index]又可以得到這一行的具體某一列的內容。
而DataGrid中就沒有這么方便了,DataGrid只有兩個屬性可用,DataGrid.CurrentCell 屬性,此屬性返回一個DataGridCell類型的結構,DataGridCell結構指明此Cell所在的行號和列號。還有一個DataGrid.Item 屬性,此屬性有兩個重載:
public object this[DataGridCell] //獲取或設置指定的 DataGridCell 的值
public object this[int, int] //獲取或設置位于指定行和列的單元格的值
可見,DataGrid中訪問都是針對某個Cell進行的。經常的,我們需要從當前的Cell獲得此Cell所對應的DataRow,比如界面中可能先選中DataGrid的某一行,或者某一個Cell,然后點擊一個按鈕,彈出一個新的窗口,窗口中顯示這一行的所有單元的內容,并允許修改單元的值,最后保存關閉窗口。這就需要從當前的DataGrid所在的單元找到其所對應的DataTable所在的行和列。
而DataGrid中顯示的數據可能經過DataView的DataView.RowFilter屬性、DataView.RowStateFilter屬性的過濾,還可能經過DataGrid本身根據各個列的正向和反向排序,所以DataGrid的CurrentRowIndex屬性所指示的行索引跟其對應的DataTable的行索引有很大的機會是不一樣的,不能夠根據DataGrid的CurrentRowIndex去獲取其對應的DataTable的行。
這時BindingManagerBase又將發揮作用了,我們可以先建立一個對應此DataGrid綁定的數據源的BindingManagerBase,這樣這個BindingManagerBase就可以管理這個數據源。
//設置DataGrid的數據源
dataGrid1.DataSource = myDataSet;
dataGrid1.DataMember = "customers";
//建立同DataGrid同樣數據源的BindingManagerBase
BindingManagerBase myBindingManagerBaseParent =
this.BindingContext[myDataSet,"customers"];
一旦建立了這個BindingManagerBase,就可以通過BindingManagerBase的當前行的屬性來獲取當前數據源的記錄:
//BindingManagerBase的Current返回數據源的對象,對于綁定到DataView的數據源,需要將此對象顯式
//的轉換為 DataRowView類型
DataRowView myDataRowView =(DataRowView) myBindingManagerBaseParent.Current
這樣,我們就可以從當前的Cell得到此Cell所在的DataRowView,DataRowView又可以通過DataRowView.Row屬性及其方便的得到DataRow。
如果還要進一步,想要得到此Cell所對應的DataTable的具體單元,就是不光要得到DataRow,還要知道這個Cell所對應的列。
這又分兩種情況:
一是DataGrid未使用TableStyles來設置DataGrid要顯示的列和格式,數據源DataView的所有列都將按照DataView本身的順序顯示出來,這樣可以直接取得對應的列索引:
//獲取當前DataGrid單元的列索引,這個索引跟DataTable的索引是一樣的
Int ColumnNumber = DataGrid.CurrentCell.ColumnNumber;
另一種情況是DataGrid使用了TableStyles來設置DataGrid要顯示的列和格式,這樣DataGrid單元的列索引跟DataTable的索引就可能是不一樣的了,這就要用DataGrid的TableStyles了:
Int ColumnNumberDataGrid = DataGrid.CurrentCell.ColumnNumber;
//獲取當前DataGrid單元的列索引
Int ColumnNumberDataTable =
DataGrid.TableStyles[0].GridColumnStyles[ColumnNumberDataGrid].MappingName
分享:String.Empty、NULL、“”的不同之處在asp.net(c#)中 String.Empty、NULL、 3個語法 經常使用,作用是判斷字符串是否為空。 本文就它們彼此的不同之處做一粗略說明。 string.Empty就相當于 一般用于字符串的初始化 比如: stringa; Console.WriteLine(a);//這里會報錯,因為沒有初始化a 而下
相關.Net教程:
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-總結.NET開發中ADO.NET的應用(6)
。