本文就在winform編程開發中有關DataGridView控件的使用總結一下,僅供參考!
一、是否自動創建列 1、.AutoGenerateColumns,獲取或設置一順序個值,該值指示在設置 DataSource 或 DataMember 屬性時是否自動創建列。 2、false,使用列表預先定義的列,不根據綁定的數據創建列,允許數據源的字段多於列表的字段,且字段的順序與列表的顯示不同。 3、true,根據綁定的數據創建列,數據源有幾個字段,則列表有幾個字段;如果數據源的字段多於列表的字段,需要在列表中設置該字段不顯示;注意,字段的順序應與顯示順序相同,避免調整麻煩。 4、需要在列表綁定數據前設置。 二、列表的數據 1、數據源綁定,舉例 DataTable dtUser = new DataTable(); String MySQLConnectionString = Class1.strConnectionString; SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open(); dtUser = new System.Data.DataTable(); //string MySQL = "Select SY_UserID, UserName, (case when IsStop =0 then '啓用' else '停用' end) AS state From SY_User"; string MySQL = "Select *, (case when IsStop = 0 then '啓用' else '停用' end) AS UserState From SY_User"; SqlCommand MyCommand = new SqlCommand(MySQL, MyConnection); SqlDataAdapter MyAdapter = new SqlDataAdapter(MyCommand); MyAdapter.Fill(dtUser); this.dgvUser.DataSource = dtUser; if (MyConnection.State == ConnectionState.Open) { MyConnection.Close(); } 2、直接在列表中加入數據,舉例 System.Data.DataTable points = new System.Data.DataTable("dtUser");//定義數據表 dtUser.Columns.Add(new DataColumn("UserID", typeof(int)));//定義各字段及屬性 dtUser.Columns.Add(new DataColumn("UserCode", typeof(string))); dtUser.Columns.Add(new DataColumn("UserName", typeof(string))); for (int i = 0; i < 10; i++) { object[] objInfo= new object[3] ; objInfo[0] = i; objInfo[1] = "Code" + i.ToString(); objInfo[2] = "Name" + i.ToString(); dtUser.Rows.Add(objInfo); } DataView dvDataSource = dtUser.DefaultView; dvDataSource.Sort = "SmID";//默認的排序字段,用戶指定的排序,在不自定義分頁的情況下,由列表控件在點擊列表字段標題時自動完成。 dataGrid1.DataSource = dvDataSource; 三、設置各列的寬度 1、按屏幕寬度,設置百分比的例子 dgvUser.Columns["SY_UserID"].Width = Convert.ToInt32(Convert.ToDouble(this.Width) * 0.15); 2、設置固定列寬 dgvUser.Columns["SY_UserID"].Width = 150; 3、注意 根據綁定的數據創建列時,要先綁定數據源,才能按照字段名或字段索引號進行列寬等其它設置。 四、格式化 1、使用列表預先定義的列時,在列表模版中,可以在樣式--format項指定,比較靈活,可以選擇已有的樣式,也可以輸入樣式的字符串,感覺不錯。 1)樣式結果和格式,可以在.designer.cs文件中查看。 2)如設置小數位統一爲4位,dataGridViewCellStyle3.Format = "N4"; 2、根據綁定的數據創建列 dgvDatasetRecord.Columns[i].DefaultCellStyle.Format = "N4"; //小數位數固定4位 技術,具體格式化字符串不可能都背下來,可以先通過練習模版,用自動生成的方法產生,複製出來,加出到正式代碼中。 五、排序方法 1、自動分頁時,排序由列表自動處理,但只能是單字段。 2、手工分頁時,傳遞排序字段到分頁存儲過程中,在原始表向臨時表導數據時,由原始表先進行排序。 六、分頁 1、自動分頁時,分頁由列表自動處理;數據量小時,用此方法。 2、手工分頁時,傳遞參數每頁記錄數、當前顯示第幾頁,到分頁存儲過程中,由從原始表生成的臨時表中,按ID範圍取記錄;數據量大時,用此方法。 七、應用說明 1、不設置字段模版的綁定和格式設置,舉例 1)列表控件不設置列信息 2)代碼中,重要部分舉例 this.dgvDatasetRecord.AutoGenerateColumns = true; //獲取或設置一個值,該值指示在設置 DataSource 或 DataMember 屬性時是否自動創建列。 this.dgvDatasetRecord.DataSource = dtRecordInfo; for (int j =0; j < R; j++)//保留四位小數 { if (判斷條件...) { dgvDatasetRecord.Columns[i].DefaultCellStyle.Format = "N4"; } } 3)如何知道是那一列數據要格式化 A、動態.Columns[i].DataType.ToString() == "System.Double",可以臨時判斷是哪列。 B、業務軟件,呵呵,列名固定時,用列名可以知道的。 2、 界面處理的通用要求 1)增加、修改後,光標仍定位在原行。 2)刪除時,如果原來已經是最後一行,則光標定位在最後一行。 3)數據量大時,應提供過濾、定位功能。 4)網絡版,考慮多人操作的問題,應提供刷新功能。 |
DataGridView控件的使用總結一下
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.