C#中用DataGridView綁定ArcGIS圖層的屬性表

 
 
這裏以Oracle SDE中的數據爲例。

首先,要建立與SDE 數據庫的連接,這裏不用AE自帶的連接接口,使用.Net自帶的OracleConnection

這裏的Connector是這樣的:
Connector = "Data Source=lsgeo;Persist Security Info=True;User ID=sde;Password=sde" 

這裏的“Data Source”是安裝SDE時的全局數據庫名。“User ID”是SDE空間數據庫名,“Password”是SDE空間數據庫的密碼。(就是Catalog裏面那個Database Connection中的Spatial Connection的連接信息)。
     空間數據庫連接完畢後,就可以選擇你要顯示的數據了。這裏用SQL語句來寫,比如你想顯示一個名叫Table的圖層所有字段的信息,SQL語句可以這樣寫:
string sql="select * from Table";
其實如果你這樣寫的話,數據加載到DataGridView上的時候會出錯的,因爲空間數據圖層有個“Shape”字段,是二進制流,所以在DataGridView上顯示不出來,並拋出異常。所以在顯示數據之前,最好有選擇的顯示字段,如果字段名裏面含有“.”將會拋出SQL語法錯誤。通常顯示一些可編輯的字段:
string sql="select FID,Layer,Code from Table";//這裏其實還可以用"where"語句進行有條件的選擇

好了,現在SQL語句寫好了,再寫下如下代碼:
//下面的代碼把數據寫入內存
OracleDataAdapter adapter = new OracleDataAdapter(sql, connection);
DataSet dsTable 
= new DataSet();
adapter.Fill(dsTable);

最後,把數據綁定到DataGridView生:
1dataGridView1.DataSource = dsTable.Tables[0];
2dataGridView1.Columns[0].ReadOnly = true;
3dataGridView1.Show();
4//因爲一般情況下,第一列是顯示的FID所以不能被編輯
5//最後,用完之後記着:connection.close();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章