DataGridView控件的使用總結一下

 
本文就在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)網絡版,考慮多人操作的問題,應提供刷新功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章