GridViewComboBoxColumn 在离开单元格后不保留显示值
GridViewComboBoxColumn not keeping display value after leaving cell
我目前的组合框在未选中单元格时显示值成员。您单击该单元格,显示成员将显示以进行选择。进行选择并单击后,valuemember 确实更改为正确的数字,但我想让它在离开单元格后显示 displaymember。
//class to hold the data
private class PriorityData
{
public string PriorityName { get; set; }
public string PriorityCode { get; set; }
public Color PriorityColor { get; set; }
}
//Construct the Priority column
_priorityColumn = new DataGridViewComboBoxColumn
{
ValueMember = "PriorityCode",
DisplayMember = "PriorityName",
Name = "Priority",
DataPropertyName = "Priority",
HeaderText = "Priority",
SortMode = DataGridViewColumnSortMode.NotSortable
};
private void LoadPriorityList()
{
try
{
using (var sqlConn = new SqlConnection(Program.sqlMgr.ConnectionString))
{
const string query = "SELECT * FROM mcPriority";
using (var da = new SqlDataAdapter(query, sqlConn))
{
var priorityTable = new DataTable();
priorityTable.Clear();
da.Fill(priorityTable);
//Clear the list
_priorityList.Clear();
//Add the list of shuttels from the database to the shuttle list for the shuttle combo box column
foreach (DataRow row in priorityTable.Rows)
{
_priorityList.Add(new PriorityData() { PriorityName = row["PriorityName"].ToString(), PriorityCode = row["PriorityCode"].ToString(), PriorityColor = Color.FromArgb(row["ColorCode"].ToInt()) });
}
//Bind the part combo box column to the shuttle list
_priorityColumn.DataSource = _priorityList;
}
}
}
catch (Exception ex)
{
MessageBox.Show($"Message: {ex.Message}{Environment.NewLine + Environment.NewLine} Class: {nameof(PaintQueueData)} Method: {nameof(LoadPriorityList)}");
}
}
我能够将数据输入到 gridview 中,所有这些都已验证,一直到屏幕显示,displaymember 的值确实是 DisplayName。
从下拉列表中选择一个选项后,显示显示成员。
然后单击单元格外,它将恢复为值成员。
任何和所有帮助将不胜感激,在此停留了一段时间。
问题是我的 PriorityCode 数据库数据类型是 int,我在代码中将其声明为字符串,导致我正在考虑的数据验证错误,因此默认为 gridview 值。在任何情况下,将我在 sql 中的数据类型与 c# 匹配就可以了。
我目前的组合框在未选中单元格时显示值成员。您单击该单元格,显示成员将显示以进行选择。进行选择并单击后,valuemember 确实更改为正确的数字,但我想让它在离开单元格后显示 displaymember。
//class to hold the data
private class PriorityData
{
public string PriorityName { get; set; }
public string PriorityCode { get; set; }
public Color PriorityColor { get; set; }
}
//Construct the Priority column
_priorityColumn = new DataGridViewComboBoxColumn
{
ValueMember = "PriorityCode",
DisplayMember = "PriorityName",
Name = "Priority",
DataPropertyName = "Priority",
HeaderText = "Priority",
SortMode = DataGridViewColumnSortMode.NotSortable
};
private void LoadPriorityList()
{
try
{
using (var sqlConn = new SqlConnection(Program.sqlMgr.ConnectionString))
{
const string query = "SELECT * FROM mcPriority";
using (var da = new SqlDataAdapter(query, sqlConn))
{
var priorityTable = new DataTable();
priorityTable.Clear();
da.Fill(priorityTable);
//Clear the list
_priorityList.Clear();
//Add the list of shuttels from the database to the shuttle list for the shuttle combo box column
foreach (DataRow row in priorityTable.Rows)
{
_priorityList.Add(new PriorityData() { PriorityName = row["PriorityName"].ToString(), PriorityCode = row["PriorityCode"].ToString(), PriorityColor = Color.FromArgb(row["ColorCode"].ToInt()) });
}
//Bind the part combo box column to the shuttle list
_priorityColumn.DataSource = _priorityList;
}
}
}
catch (Exception ex)
{
MessageBox.Show($"Message: {ex.Message}{Environment.NewLine + Environment.NewLine} Class: {nameof(PaintQueueData)} Method: {nameof(LoadPriorityList)}");
}
}
我能够将数据输入到 gridview 中,所有这些都已验证,一直到屏幕显示,displaymember 的值确实是 DisplayName。
从下拉列表中选择一个选项后,显示显示成员。
然后单击单元格外,它将恢复为值成员。
任何和所有帮助将不胜感激,在此停留了一段时间。
问题是我的 PriorityCode 数据库数据类型是 int,我在代码中将其声明为字符串,导致我正在考虑的数据验证错误,因此默认为 gridview 值。在任何情况下,将我在 sql 中的数据类型与 c# 匹配就可以了。