前言
前篇文章都是靠設計頁面完成,但是如果我想要直接靠程式碼動態給予 DataGridViewComboBoxColumn 選項資料,所以此篇來做一些簡單應用。
正文
方式一
在設計頁面的時候,給予這 DataGridViewComboBoxColumn 欄位一個 Name,然後如下
1 2 3 4 5 6 7 8
| private void gvInit() { gvGender.Items.Clear(); gvGender.Items.AddRange(new object[] { "Male", "Female", "test"}); gvSample.DataSource = dt; }
|
方式二
使用 Class 撰寫一個 Text 與 Value 的類別,類似網頁下拉選單的選項
1 2 3 4 5 6 7 8 9 10 11
|
public class ComboData { public ComboData(string text, string value) { Display = text; Value = value; } public string Display { get; set; } public string Value { get; set; } }
|
接著初始化的時候,把選項塞進去
1 2 3 4 5 6 7 8 9 10 11
| private void gvInit() { gvGender.Items.Clear();
gvGender.Items.Add(new ComboData("Male", "1")); gvGender.Items.Add(new ComboData("Female", "0")); gvGender.Items.Add(new ComboData("test", "2")); gvGender.DisplayMember = "Display"; gvGender.ValueMember = "Value"; gvSample.DataSource = dt; }
|
cbGender.SelectedValue 就是類別中的 Value, cbGender.Text 就會是 Display,所以注意一下新增動作的時候,要變更為
1 2 3 4 5 6 7 8
| private void button1_Click(object sender, EventArgs e) { DataRow dr = dt.NewRow(); dr["Name"] = txtName.Text.Trim(); dr["Gender"] = cbGender.SelectedValue; dr["Married"] = ckMarried.Checked ? 1 : 0; dr["Birthday"] = dtpBirthday.Value; dt.Rows.Add(dr); }
|
畫面呈現
與前篇相同,主要在程式碼的操作不同
範例程式
Github 上的 Sample Code
參考資料