關於DataGridViewComboBoxColumn的進階綁定問題

來源:互聯網
上載者:User

今天我開始上班了.先解決節前的一個遺留問題.

我在DataGridView中有一DataGridViewComboBoxColumn,讓此ComboBoxColumn綁定一個我自訂的枚舉型(即顯示"平行,下行,上行",值分別為0,1,2);但是在DataGridView綁定後並沒有顯示中文,而是拋出DataError異常,花了我一早上時間,最後發現,問題在要指定兩個綁定的類型相同,才能在下拉式清單中自動找到所指定的值,從而正確顯示中文.暈,太浪費時間了

public enum TemplateGoto
{
平行,下行,上行
};

/// <summary>
/// 綁定DataGridViewComboBoxColumn
/// </summary>
/// <param name="dgvComboBox">DataGridViewComboBoxColumn</param>
/// <param name="enumType"></param>
public static DataTable DataBindDataGridViewComboBoxColumn(DataGridViewComboBoxColumn dgvComboBox, System.Type enumType)
{
DataTable source = Enum2DataTable(enumType, dgvComboBox.HeaderText, dgvComboBox.DataPropertyName);
dgvComboBox.DataSource = source;
dgvComboBox.DisplayMember = dgvComboBox.HeaderText;
dgvComboBox.ValueMember = dgvComboBox.DataPropertyName;
return source;
}
/// <summary>
/// 枚舉名和值轉換到DataTable
/// </summary>
/// <param name="enumType">枚舉執行個體</param>
/// <param name="key">名</param>
/// <param name="val">值</param>
/// <returns>DataTable</returns>
public static DataTable Enum2DataTable(Type enumType, string key, string val)
{
// 擷取所有枚舉的名稱
//string[] names = Enum.GetNames(enumType);
// 擷取所有枚舉的值
Array values = Enum.GetValues(enumType);
DataTable dict = new DataTable();
dict.Columns.Add(new DataColumn(key));
dict.Columns.Add(new DataColumn(val));
dict.Columns[val].Unique = true;
dict.Columns[val].AllowDBNull = false;
//如果這裡不指定和DataGrid對應列相同的列類型就會拋出DataError異常
dict.Columns[val].DataType = Type.GetType("System.Int16");
for (int i = 0; i < values.Length; i++)
{
DataRow dr = dict.NewRow();
dr[key] = values.GetValue(i);
dr[val] = (System.Int16)((int)values.GetValue(i));
dict.Rows.Add(dr);
}
return dict;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.