急!!!!!! DataGridView中如何实现和ComboBox一样的功能
就在DataGridView中,点击某个单元格的时候会有和ComboBox一样的下拉菜单列出选择项,当焦点在该单元格上的时候能显示,当焦点不在该单元格上的时候不显示。谢谢了。
------解决方案--------------------private void RefreshDataGrid()
{
if (da != null)
{
da.Dispose();
}
if (ds != null)
{
ds.Dispose();
}
SqlConnection conn = ManageConn.getConnection();
string sql = " ";
sql = "select sm.mmId,pm.mmName,sm.sId,sm.smName,sm.CreateDate,sm.Tooltips,case when sm.isUsed=1 then 'true ' else 'false ' end as isUsed,sm.SerialNo,sm.Description ";
sql += "from PGSubMenu as sm inner join PGMainMenu pm ON sm.mmId=pm.sId order by pm.mmName,sm.SerialNo ";
SqlCommand cmd = new SqlCommand(sql,conn);
da = new SqlDataAdapter(cmd);
ds = new DataSet();
da.Fill(ds, "PGSubMenu ");
SubMenuBindingSource.DataSource = ds;
SubMenuBindingSource.DataMember = "PGSubMenu ";
dgvSubMenu.AutoGenerateColumns = false;
dgvSubMenu.DataSource = SubMenuBindingSource;
ManageConn.freeConnection(conn);
sql = "select sId as mmId,mmName from PGMainMenu order by SerialNo ";
conn=ManageConn.getConnection();
cmd = new SqlCommand(sql, conn);
SqlDataAdapter da1 = new SqlDataAdapter(cmd);
da1.Fill(ds, "PGMainMenu ");
mmName.DataSource = ds.Tables[ "PGMainMenu "];
mmName.DisplayMember = "mmName ";
mmName.ValueMember = "mmId ";
mmName.DisplayStyleForCurrentCellOnly = true;
ManageConn.freeConnection(conn);
dgvSubMenu.Columns[0].DataPropertyName = "mmId ";//需對應為 combox.ValueMember屬性
dgvSubMenu.Columns[1].DataPropertyName = "sId ";
dgvSubMenu.Columns[2].DataPropertyName = "smName ";
dgvSubMenu.Columns[3].DataPropertyName = "CreateDate ";
dgvSubMenu.Columns[4].DataPropertyName = "Tooltips ";
dgvSubMenu.Columns[5].DataPropertyName = "isUsed ";
dgvSubMenu.Columns[6].DataPropertyName = "SerialNo ";
dgvSubMenu.Columns[7].DataPropertyName = "Description ";
isUsed.TrueValue = Boolean.Parse( "true ");
isUsed.FalseValue = Boolean.Parse( "false ");
dgvSubMenu.ReadOnly = true;
dgvSubMenu.Refresh();
ManageConn.freeConnection(conn);
}
------解决方案--------------------((DataGridViewComboBoxColumn)this.dataGridView1.Columns[ "Column1 "]).DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;