困扰了好几天,求各位大神支持。DataGridViewComboBoxCell问题

小菜虫一只 2018-06-11 11:17:43
我有个datagrid绑定了数据库某个表的A,B,C字段的信息,我需要把其中一个列A作成下拉菜单。
A的值包含1,2,3. 对应的下拉菜单显示信息为“你”,“好”,“吗”.

使用现在的代码,下拉菜单添加成功。但是有一问题,初始化界面时,下拉菜单显示的是ValueMember ,而不是DisplayMember 。点击下拉菜单后,显示的是DisplayMember 。当光标移走点击别处时,又变回了ValueMember。查了两三天都没有查出来为什么。大家能不能帮帮我。谢谢


我在初始化时,为datagridView赋值后,增加了下面的代码。
_ctrlGridQ.gridView.RowsAdded += vRowsAdded;

//为下拉菜单赋值
private void vRowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
var getCell = new Func<int, string, DataGridViewCell>((rowIdx, cellName) =>
_ctrlGridQ.gridView.Rows[rowIdx].Cells[cellName]);


try
{
int rowIndex = e.RowIndex;
int rowCount = e.RowCount;
for (int i = rowIndex; i < rowIndex + rowCount; i++)
{
var rRow = _ctrlGridQ.gridView.Rows[i];
using (var A_Cell = getCell(i, "A") as DataGridViewComboBoxCell)
{
A_Cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
A_Cell.DataSource = EnumToDataTable(typeof(A_Status));
A_Cell.DisplayMember = "Key";
A_Cell.ValueMember = "Value";
}
}
}
catch (GCUIException ex)
{
GCMessageBox.ShowBox(ex.Message, "error");
}
}



//将下拉菜单对应内容转为datatable
public static DataTable EnumToDataTable(Type A_Status)
{
string[] Names = Enum.GetNames(A_Status);
for (int i = 0; i < Names.Length; i++)
{
Names[i] = GCLngSupport.sGetString(Names[i]);
}

Array Values = Enum.GetValues(A_Status);

DataTable table = new DataTable();
table.Columns.Add("Key", System.Type.GetType("System.String"));
table.Columns.Add("Value", System.Type.GetType("System.Int32"));
table.Columns["Key"].Unique = true;
for (int i = 0; i < Values.Length; i++)
{
DataRow DR = table.NewRow();
DR["Key"] = Names[i];
DR["Value"] = (int) Values.GetValue(i);
table.Rows.Add(DR);
}

return table;
}

//A 对应下拉菜单内容定义
public enum A_Status
{
"你" = 1,
“好” = 2,
“吗” = 3,
}


...全文
218 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小菜虫一只 2018-06-11
  • 打赏
  • 举报
回复
自己解决了,以后有其他问题再请教大家,谢谢各位。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧