【问题标题】:Show 0/1 as yes/no in DevExpress XtraGrid?在 DevExpress XtraGrid 中将 0/1 显示为是/否?
【发布时间】:2020-03-06 16:40:08
【问题描述】:

我有这个用于常规 DataGridView 的代码,但我无法在 XtraGrid 上获得相同的效果:

private void RosterGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 7 && e.Value is long)
    {
        e.Value = (long)e.Value == 0 ? "No" : "Yes";
    }
}

问题是我使用的是 SQLite,它没有任何真正的布尔数据类型,否则这很容易。该列在数据库中设置为仅接受 0 和 1,这是一种临时的布尔值。

【问题讨论】:

  • 核心 SQLite DB 没有布尔值,但最终,这只是一个实现细节。 SQLite Provider objects know how to convert and do so
  • 非常有趣。我将数据库更改为使用 bool ,并且它起作用了。我想,因为它不是一个不支持的选项。谢谢
  • 对 SO 表示“感谢”的正确方法是对答案或任何有帮助的帖子进行投票。简介 tour 解释了网站的工作原理

标签: c# winforms sqlite devexpress xtragrid


【解决方案1】:

使用 DevExpress 你can set up the specific column to use the RepositoryItemCheckEdit:

// Assign a repository item to a column            
RepositoryItemCheckEdit checkEdit = new RepositoryItemCheckEdit();
gridControl.RepositoryItems.Add(checkEdit);
gridView.Columns["Mark"].ColumnEdit = checkEdit;

之后,您可以设置ValueCheckedValueUnchecked 和ValueGrayed 属性分别指定对应于编辑器的选中、未选中和不确定状态的值。 ValueChecked、ValueUnchecked 和 ValueGrayed 属性的默认值分别为 true, false and null。您可以根据逻辑需要为这些属性分配自定义值:

checkEdit.ValueChecked = (long)1;
checkEdit.ValueUnchecked = (long)0;

通过这种方法,您可以在GridView中显示和编辑值时避免任何值转换操作。

【讨论】:

    【解决方案2】:

    另一种可能是在 gridView 上使用 CustomColumnDisplayText 事件

    private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
    {
        if (e.Column = <yourColumn>)
        {
            e.DisplayText = (long) e.Value == 1 ? "Yes" : "No";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-29
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多