[C#][WinForm]DataGridView如何動態加入下拉選單
前幾天User希望DataGridView某個欄位可以改成下拉選單,
後來翻一下MSDN,發現動態加入DataGridViewComboBoxColumn並不難,紀錄一下。
初始畫面:
User希望ZIPCODE可以改成下拉選單,並顯示地區名稱。
完成畫面:
initData:
private void initData(string strconn)
{
DataTable dt=new DataTable ();
using( SqlConnection conn = new SqlConnection( strconn ) )
{
using( SqlDataAdapter da = new SqlDataAdapter( "select * from dbo.userm", conn ) )
{
try
{
da.Fill( dt );
}
catch( SqlException sqlex )
{
throw new Exception( sqlex.Message );
}
catch( Exception ex )
{
throw new Exception( ex.Message );
}
}
}
dataGridView1.DataSource = dt;
}
FormatColumn:
private void FormatColumn( string strconn )
{
dataGridView1.Columns.Remove( "ZIPCODE" );
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
DataTable dt = new DataTable();
using( SqlConnection conn = new SqlConnection( strconn ) )
{
using( SqlDataAdapter da = new SqlDataAdapter( "select * from dbo.codes", conn ) )
{
try
{
da.Fill( dt );
}
catch( SqlException sqlex )
{
throw new Exception( sqlex.Message );
}
catch( Exception ex )
{
throw new Exception( ex.Message );
}
}
}
combo.DisplayIndex = 1;
combo.HeaderText = "ZIPCODE";
combo.DataPropertyName = "ZIPCODE";//資料行名稱
combo.DisplayMember = "ZONENAME";//顯示清單選項內容
combo.ValueMember = "ZIPCODE"; //清單選項對應的值
combo.DataSource = dt;
dataGridView1.Columns.Insert( 1, combo );
}
參考