淺析C# DataGrid控件
在實際的應用項目中,通常需要把用ADO.NET組件獲得的數據信息顯示在界面上,供用戶瀏覽或修改??梢酝ㄟ^使用.NET的DataGrid控件實現這種功能。
C# DataGrid控件與數據綁定
C# DataGrid控件的主要目的是實現“數據綁定”(Data Binding),即把DataGrid控件上顯示的數據同后臺數據庫的數據綁定在一起,同步地一起變化。
另外,DataGrid控件以表格的形式顯示了查詢到的數據結果集,默認的訪問方式是只讀而不能修改,通過設置,可以實現記錄的修改和刪除功能。
DataGrid代碼示例
通過以下的步驟,能將數據庫里的數據動態綁定到DataGrid對象里并顯示。
(1) 在D盤下建立一個Access類型的數據庫,命名為Student.mdb。
(2) 打開Visual Studio 2005環境后,選擇“文件”|“新建”|“新建網站”命令,在彈出的“新建網站”對話框中選擇“ASP.NET項目”,輸入網站名 testDataGrid和路徑C:\root\DataGrid,登錄模塊所有代碼和配置文件均放在此項目下。
(3) 在集成開發環境中的“解決方案資源管理器”里,選中項目,右擊,在彈出的快捷菜單中選擇“添加新項”命令,新建一個Web配置文件,命名為Web.config。該配置文件主要用來管理登錄模塊的一些全局性數據。
其中,在配置文件里設置數據庫的連接屬性,使用OleDB的Data Provider,連接到Access數據源上,代碼如下:
- <configuration>
- <appSettings>
- <addkeyaddkey="connStr"value="Porvider=Microsoft.Jet.OleDB.4.0;
- DDataSource=D:\login.mdb"></add>
- </appSettings>
- <connectionStrings/>
(4) 在集成開發環境中的“解決方案資源管理器”里,選中項目,右擊,在彈出的快捷菜單中選擇“添加新項”命令,新建一個Web窗體,命名為showDataGrid.aspx。
(5) 打開“工具箱”的“Web窗體”,從中拖曳一個C# DataGrid控件到頁面上,從DataGrid的屬性欄中,可以看到該DataGrid對象叫 DataGrid1。選中DataGridView控件,右擊,在彈出的快捷菜單中選擇“屬性”命令,在屬性欄的Columns中單擊“…”按鈕,在彈出的“編輯列”對話框中,通過“添加”命令,依次向DataGridView控件里添加“學號”、“姓名”和“性別”3列,并把每列的 DataPropertyName設置成該列對應的數據庫字段,用于數據綁定。
(6) 雙擊窗體的空白處,進入相應的邏輯代碼文件showDataGrid.aspx.cs。在該文件的頂端,添加數據庫訪問引用的命名空間語句:
- privatestaticstringstrConnect=System.Configuration.ConfigurationManager.AppSettings["connStr"];
- 然后在該頁面的Page_Load方法里添加以下代碼:
- //數據庫連接
- OleDbConnectionobjConnection=newOleDbConnection(strConnect);
- //數據庫命令
- OleDbCommandobjCommand=newOleDbCommand("",objConnection);
- try
- {
- //設置Sql語句
- objCommand.CommandText="SELECTSID,SName,SexFROMStudentInfoORDERBYSID";
- //打開數據庫連接
- if(objConnection.State==ConnectionState.Closed)
- {
- objConnection.Open();
- }
- //創建DataSet對象
- DataSetobjDataset=newDataSet();
- //使用DataAdapter對象填充DataSet
- OleDbDataAdapterobjAdapter=newOleDbDataAdapter(objCommand);
- objAdapter.Fill(objDataset,"objDataset");
- DataGrid1.DataSource=objDataset.Tables["objDataset"];
- //數據綁定
- DataGrid1.DataBind();
- }
- catch(SqlExceptionexp)
- {
- MessageBox.Show(exp.Message,"錯誤",MessageBoxButtons.OK);
- }
- finally
- {
- //關閉數據庫連接
- if(objConnection.State==ConnectionState.Open)
- {
- objConnection.Close();
- }
- }
【編輯推薦】