如何使用 C# 在 gridcontrol devexpress 中设置 Check Repository 单选组

how to set Check Repository radio group in gridcontrol devexpress using C# from value another table

我在网格控制单元格中有存储库单选组,我想在存储库单选单元中设置检查,而值来自另一个单元格。这是我的样本:

ISJAWAB 值为 1 时,将在列 PILIH 中检查存储库单选组.

我试过简单的代码,但它不起作用:

private void gridView2_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
    if (e.Column.FieldName == "PILIH")
    {
        var val = Convert.ToString(gridView2.GetRowCellValue(e.RowHandle, "ISJAWAB"));
        if (val == "1")
        {
            e.DisplayText = "1"; //nilai 1 untuk select radio
        }
    }
}

在存储库集合中,我将值设置为 1,它会自动设置检查存储库单选组。

需要帮助??

在这种情况下,

RadioGroup 不是就地编辑器的最佳选择,因为它为您提供了在单个单元格中显示多个选项的冗余功能。为了您的目的,您可以使用 CheckEdit。此外,对于 CustomDrawCell 事件,您实际上必须手动重绘单选按钮。有一个使用未绑定列的更简单的解决方案。

所以我建议以下解决方案:

1.Add CheckEdit 存储库项,设置它的 CheckStyle 属性 等于 Radio.

2.Make 你的 PILIH 列的 Unbound Type = Boolean。将上面提到的 CheckEdit 存储库项目分配给它的 ColumnEdit。设置 OptionsColumn.AllowEdit = false.

3.Add gridView2.CustomUnboundColumnData 事件处理程序,正文如下:

private void gridView2_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
    if (e.IsGetData && e.Column.FieldName == "PILIH")
    {
        var row = (DataRow) e.Row;
        var val = Convert.ToString(row["ISJAWAB"]));
        if (val == "1")
        {
            e.Value = true;
        }
    }
}     

您必须将 reposityRadio 的类型从 1 改为 Boolean 改为 true :

第2个PILIH列数据源必须是bool类型 并使用此代码:

private void gridView2_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
    if (e.Column.FieldName == "PILIH")
    {
        var val = Convert.ToString(gridView2.GetRowCellValue(e.RowHandle, "ISJAWAB"));
        if (val == "1")
        {
            gridView2.SetRowCellValue(e.RowHandle, "PILIH", true);
        }
    }
}

结果应该是这样的: