c# - 使用 Winforms 使用 Combobox 绑定空值
问题描述
我有这个列表来使用dapper
.
public List<ComplaintActionsModel> GetComplaintActions(int complaintID)
{
using (MySqlConnection conn = new MySqlConnection(ConnectionString.ConnString))
{
var output = conn.Query<ComplaintActionsModel>($@"
SELECT
Status
FROM customercomplaintsactions WHERE id = {complaintID}").ToList();
return output;
}
}
然后在用户单击时,我将值加载到组合框中。像这样:
List<ComplaintActionsModel> complaintsActionsList = new List<ComplaintActionsModel>();
private void update_Click(object sender, EventArgs e)
{
int id = (int)ComplaintsData.CurrentRow.Cells[0].Value; // Get id of selected row in DataGrid
DataAccess db = new DataAccess();
complaintsActionsList = db.GetComplaintActions(id); // Find Status from database
status.DataBindings.Add("Text", complaintsActionsList, "Status", true, DataSourceUpdateMode.OnPropertyChanged); // Set value of status combobox from the database
}
// Model
public class ComplaintActionsModel
{
public string Status { get; set; }
}
问题
举个例子:
如果 MySQL 数据显示值为“Open for Investigation”,它将选择此索引:
接下来,如果我转到下一条记录,然后单击按钮 - 它应该在组合框中显示一个空值 - 因为有一个null
值。
如果返回的值为 ,如何取消选择组合框中的项目null
?
解决方案
如果我理解你的问题,这应该会让你朝着一个好的方向前进。首先,处理 Binding.Format 事件,如下所示:
Binding b = new Binding("Text", complaintsActionsList, "Status", true);
b.Format += complaintAction_Format;
DataBindings.Add(b);
然后,当格式事件中的值为 null 时,执行您想做的任何事情,如下所示:
private void complaintAction_Format(object sender, ConvertEventArgs e)
{
//do whatever you want to do in case of null
e.Value = e.Value == null ? "" : e.Value;
//or
if(e.Value == null)
{
myComboBox.SelectedIndex = -1;
}
}
推荐阅读
- java - 如何将 HostApduService 保留为 Android 上的后台服务
- rust - 比较 RefCell 中包含的值
- javascript - 如何在 Wordpress 上延迟嵌入 YouTube 视频的 javascript?
- python - 我需要使用 Python 登录 Goodreads
- python - 从单个 2D 视频重建飞行物体的 3D 轨迹
- javascript - 正则表达式在字符串中查找图像链接
- javascript - 如何在 Angular 2+ 中更改锚点的 html 元素后设置 @ViewChild('anchor_name')?
- c# - 正则表达式从字符串中提取时间信息
- javascript - onkeyup 函数只计算第一个数字。根据我的公式为什么?
- php - 从 shellscript 检索 cmd 到 php,但使用 pgsql select 或 ssh select